Суббота, 20.04.2024, 13:37
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Другое » Корзина » Про врага. (Зависание на блоке.)
Про врага.
lenalenikaДата: Пятница, 10.04.2015, 17:03 | Сообщение # 1
Начинающий игродел
Группа: Пользователи
Сообщений: 85
Награды: 0
Репутация: 1
Статус: Offline
Как сделать чтобы когда враг терял игрока, он не  зависал на блоке( а то пока он преследует всё нормально но как только теряет игрока например на каком нибудь препятствии он зависает на блоке как бы в прыжке)

Сообщение отредактировал Volk - Понедельник, 01.02.2016, 14:57
 
BRESSДата: Суббота, 11.04.2015, 13:52 | Сообщение # 2
Мастер-ломастер
Группа: Администраторы
Сообщений: 3120
Награды: 1
Репутация: 224
Статус: Offline
Могу ли я глянуть исходные коды?

Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!
 
lenalenikaДата: Суббота, 11.04.2015, 14:08 | Сообщение # 3
Начинающий игродел
Группа: Пользователи
Сообщений: 85
Награды: 0
Репутация: 1
Статус: Offline
В Step врага 
if have_seen = true
{
    // Walking away from player if enemy is too close.

    if obj_player.x > x
    {
        dir = 1 // Direction is right.
        
        if place_free(x - 5,y)
        {
            if distance_to_object(obj_player) < 150
            {
                x -= 3.1
            }
        }
    }
    else if obj_player.x < x
    {
        dir = -1 // Direction is left.
        
        if place_free(x + 5,y)
        {
            if distance_to_object(obj_player) < 150
            {
                x += 3.1
            }
        }
    }

    // Walking towards the player.

    if obj_player.x > x
    {
        if place_free(x - 5, y) // If there isn't a wall left of you...
        {
            if distance_to_object(obj_player) > 149
            {
                x += 3.1
            }
        }
    }
    else if obj_player.x < x
    {
        if place_free(x + 5,y) // If there isn't a wall right of you...
        {
            if distance_to_object(obj_player) > 149
            {
                x -= 3.1
            }
        }
    }

    // Jumping Over Things
    
    if !place_free(x + 15,y) // If a platform is coming to the right of you...
    {
        if !place_free(x,y + 1) // If there is ground under you...
        {
            vspeed= (-6 - random(1)) // Jump
        }
    }
    else if !place_free(x - 15,y) // If a platform is coming to the left of you...
    {
        if !place_free(x,y + 1) // If there is ground under you...
        {
            vspeed= (-6 - random(1)) // Jump
        }
    }

    // Dodge bullet
    
    if distance_to_object(obj_bullet_player) < 75 // If you are too close to bullet...
    {
        if obj_player.x < x
        {
            if place_free(x + 5,y)
            {
                x += 8 // Walks away
            }
        }
        else if obj_player.x > x
        {
            if (place_free(x - 5, y))
            {
                x -= 8 // Walks away
            }
        }
    }
}
И ещё в Step

// Gravity

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

// Have Seen

if have_seen = false
{
    if !collision_line(x,y,obj_player.x,obj_player.y,blok09,0,1) || distance_to_object(obj_bullet_player) < 10
    {
        have_seen = true
    }
}

// Changing Sprites

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

// Dying

if hp < 1
{
    instance_destroy()
}

// Shooting

if !collision_line(x,y,obj_player.x,obj_player.y,blok09,0,1)
{
    if have_seen = true // If enemy sees you...
    {
        if can_attack = true // If enemy can attack...
        {
            var shoot;
            
            shoot = instance_create(x,y,obj_bullet_enemy) // Create bullet
            shoot.direction = point_direction(x,y,obj_player.x,obj_player.y) // Bullet direction is player. 
            shoot.speed = 13 // Bullet speed is 15.
            
            can_attack = false // Enemy can't attack anymore.
            alarm[0] = 8 // Enemy can attack in 1/2 second.
        }
    }
}
А в столкновении с блоком
просто 
// Collision

if vspeed > 0 && !place_free(x,y + vspeed)
{
    move_contact_solid(direction,vspeed)
}

vspeed = 0
думаю код в таймере для темпа стрельбы не нужен.
 
BRESSДата: Суббота, 11.04.2015, 21:53 | Сообщение # 4
Мастер-ломастер
Группа: Администраторы
Сообщений: 3120
Награды: 1
Репутация: 224
Статус: Offline
lenalenika, я подразумевал сам исходник игры. Очень сложно сориентироваться, имея весьма смутные представления о проблеме и довольно мудренный скрипт бота :)

Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!
 
Форум » Другое » Корзина » Про врага. (Зависание на блоке.)
  • Страница 1 из 1
  • 1
Поиск: