Хэлоу, помогите плез если можете, всю голову сломал уже.
Итак, у меня есть объект игрока obj_player в котором я уже прописал передвижения и проигрывание анимации движения в 4 стороны, а так же прописал остановку анимации если игрок не нажимает клавиши.
Далее.
Создал объект obj_damage который создается по нажатию клавиши и прописал в событии create - alarm[0] = 1 ,а так же создал у объекта событие Alarm и прописал внутри instance_destroy(); - что бы объект obj_damage исчезал сразу после создания.
И вот тут загвоздка как мне кажется, потому что я вроде бы понимаю , как прописать проигрывание анимации при ударе, по идее отличий от прописывания анимации движениям - нет, но видимо не до конца понимаю.
Код события Steps объекта obj_player
Код
///Вызов родительского события
event_inherited();
///Вызов скрипта с переменными управления
player_move();
///Движение вправо
if (right_move){
phy_position_x += player_speed;
sprite_index = player_sprite_right;
image_speed = 1;
}
///Движение влево
if (left_move){
phy_position_x -= player_speed;
sprite_index = player_sprite_left
image_speed = 1;
}
///Движение вверх
if (up_move){
phy_position_y -= player_speed;
sprite_index = player_sprite_up;
image_speed = 1;
}
///Движение вниз
if (down_move){
phy_position_y += player_speed;
sprite_index = player_sprite_down;
image_speed = 1;
}
///Остановка движения если не нажаты клавиши
if (!right_move and !left_move and !up_move and !down_move){
image_speed = 0;
///Если не нажаты клавиши, то анимация возвращается к
///первому по счету кадру
image_index = 0;
}
///Условие для атаки
if (player_attack){
///Создание локальной переменной dmg_obj
var dmg_obj = instance_create_depth(x, y + 10, 0, obj_damage);
///Обращение к переменной creator и записывание в неё id игрока
dmg_obj.creator = id;
}
///Анимация атаки вниз
if(player_attack) and (sprite_index = player_sprite_down)
{
sprite_index = player_attack_down;
image_speed = 1;
}
И вроде все сделал так же как и с анимацией передвижения: добавил спрайты, выставил такое же количество фреймов как и у движений , но анимации атаки нет, вот я и грешу на событие alarm
Может анимацию ударов вообще надо не в Steps объекта игрока писать ,а нужно создать Steps у объекта с нанесением урона
Причем если убрать из первой строчки and (sprite_index = player_sprite_down) (это я пытаюсь привязать конкретный спрайт к направлению куда в данный момент смотрит игок) и оставить только if(player_attack) , то персонаж действительно повернется вниз, но анимации все равно не будет.
И второй вопрос про анимацию движения врагов в разные стороны.
Есть у меня объект врага obj_enemy_skelet, у него есть 4 спрайта для движений в 4 разные стороны как и у игрока. Ему я прописал в Steps следующее:
Код
///Проверка на существование объекта - игрока
if (instance_exists(obj_player)){
///Преследование игрока скелетом по осям x и y
phy_position_x += sign (obj_player.x - x) * speed_enemy;
phy_position_y += sign (obj_player.y - y) * speed_enemy;
image_speed = 1;
}
И теперь никак не пойму , как мне обозначить направление в котором он повернулся преследуя игрока?
Сейчас у него воспроизводится только один спрайт, тот который привязал к самому объекту скелета.
Заранее спасибо за помощь.