Random txt Срок жизни ресурса

Часы в форме

Форум сайта www.mizzystic.ru

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум сайта www.mizzystic.ru » Прошу помощи » Помогите с платформером


Помогите с платформером

Сообщений 1 страница 5 из 5

1

Здравствуйте друзья,я сделал базовый платформер,а вот с модификацией мне и нужна помощь,у меня в платформере есть АИ,он хорошо работает..но я попытался встроить возможность апгрейда для персонажа и не знаю как сделать,чтобы аи стрелял по персу любого уровня...код аи
                       Шаг

Код:
// Гравитация хд..

if place_free(x, y + 1) 
{
    gravity = 0.5 
}
else 
{
    gravity = 0  
}

// Возможность видеть

if have_seen = false
{
    if !collision_line(x,y,o_player.x,o_player.y,o_wall,0,1) || distance_to_object(obj_bullet) < 10
    {
        have_seen = true
    }
}

// Меняем спрайты...не работает почему не знаю.

if dir = 1
{
    image_index = 0
}
else if dir = -1
{
    image_index = 1
}



if hp < 1
{
    instance_destroy()
}



if !collision_line(x,y,o_player.x,o_player.y,o_wall,0,1)
{
    if have_seen = true 
    {
        if can_attack = true 
        {
            var shoot;
            
            shoot = instance_create(x,y,obj_bullet_enemy)
            shoot.direction = point_direction(x,y,o_player.x,o_player.y)             
            shoot.speed = 15 
            
            can_attack = false 
            alarm[0] = (room_speed / 2)
        }
    }
}

2ой код в шаге:

Код:
if have_seen = true
{

    if o_player.x > x
    {
        dir = 1 
        
        if place_free(x - 5,y)
        {
            if distance_to_object(o_player) < 150
            {
                x -= 3.1
            }
        }
    }
    else if o_player.x < x
    {
        dir = -1 
        
        if place_free(x + 5,y)
        {
            if distance_to_object(o_player) < 150
            {
                x += 3.1
            }
        }
    }


    if o_player.x > x
    {
        if place_free(x - 5, y) 
        {
            if distance_to_object(o_player) > 149
            {
                x += 3.1
            }
        }
    }
    else if o_player.x < x
    {
        if place_free(x + 5,y)         {
            if distance_to_object(o_player) > 149
            {
                x -= 3.1
            }
        }
    }

    
    if !place_free(x + 15,y) 
    {
        if !place_free(x,y + 1) 
        {
            vspeed= (-6 - random(1)) 
        }
    }
    else if !place_free(x - 15,y) 
    {
        if !place_free(x,y + 1) 
        {
            vspeed= (-6 - random(1)) 
        }
    }


    
    if distance_to_object(obj_bullet) < 75 
    {
        if o_player.x < x
        {
            if place_free(x + 5,y)
            {
                x += 8 
            }
        }
        else if o_player.x > x
        {
            if (place_free(x - 5, y))
            {
                x -= 8 
            }
        }
    }
}

Отредактировано 3d quattro (2009-12-17 15:26:50)

0

2

3d quattro написал(а):

if dir = 1
{
    image_index = 0
}
else if dir = -1
{
    image_index = 1
}

Спрайт не меняеться, потому что ты используешь не ту функцию. Функция image_index меняет спрайт на другой(но не кадр!!!!) Что бы поменять кадр в спрайте есть функция image_single.

Вот правильный фрагмент кода:

Код:
{
    image_single = 0
}
else if dir = -1
{
    image_single = 1
}

И ещё, какой именно апгрейд ты хотел сделать?

Отредактировано BOGGAD (2009-12-18 15:03:06)

0

3

Допустим набралось 150 у игрока,можно нажать на кнопку,которая при нехватке монет выводит сообщение,а при достаточном количестве меняет объект игрока на другой объект игрока,у которого свойства получше.ну систему я знаю как сделать но вот что-бы на любой тип игрока реагировал аи...нет

За код с сменой спрайта спасибо :)

Отредактировано 3d quattro (2009-12-18 17:38:20)

0

4

3d quattro апгрейд можно сделать номного проще! Например, мы хотим чтобы высота прыжка зависела от кол-ва монет: 100 монет -- высота 5, 200 --10, 300 -- 15
На клавишу прыжка ставим код:

if global.money <100 then
  jump(3);
if global.money>=300 then
   jump(15)
if global.money>=200 then
   jump(10)
if global.money >=100 then
   jump(5);

У нас:
global.money -- кол-во денег
jump(argument) -- скрипт прыжка, argument это высота прыжка

Отредактировано BOGGAD (2009-12-18 20:38:51)

0

5

спасибо,попробую,

а ты мне идею подсказал!я понял!при переменной счёт равной 100,переменная ранг = 1,при ранге = 0 прыжок - 7,а при ранге 1 прыжок -14!!!!

Отредактировано 3d quattro (2009-12-21 14:29:31)

0


Вы здесь » Форум сайта www.mizzystic.ru » Прошу помощи » Помогите с платформером


Рейтинг форумов | Создать форум бесплатно