Как исправить: код не работает на определенных кадрах - PullRequest
0 голосов
/ 21 сентября 2019

Я пытался заставить своего персонажа стрелять снарядом в определенный кадр анимации.Тем не менее, иногда это работает, а иногда просто игнорирует создание снаряда.

Я пытался использовать сигналы тревоги вместо проверки индекса изображения, но я не могу установить таймер на достаточно низкое значение, чтобы получить идеальное время.

Я думаю, что это может быть проблема со скоростью изображения 0.2 вместо 1.

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

Вот соответствующий код из состояния стрельбы:

if image_index == 2 {
   instance_create(x+20*image_xscale,y,obj_projectile);
}

Вот код, который меняет танкпереходит в состояние съемки из основного состояния:

if key_shoot{
   state = states.shoot;
   image_speed = 0.2;
   sprite_index = spr_tankShoot;
}

В объекте также есть событие завершения анимации со следующим кодом:

if sprite_index == spr_tankShoot{
   state = states.normal;
}

Если кто-то может увидеть что-то не так скод и / или знать, что может быть не так с этим, это будет высоко ценится.

1 Ответ

0 голосов
/ 21 сентября 2019

Я думаю, что это может быть проблема со скоростью изображения 0.2 вместо 1.

Это возможно - если ваша анимация имеет разные скорости и вы не склонны сбрасыватьimage_index при запуске анимации, вы можете получить различные начальные индексы (предположим, 0.1), которые не упадут до 2.0 при добавлении 0.2 к ним.В общем, проверка того, что фрейм является в точности числом, является не очень хорошей практикой.

Вы можете сохранить image_index в конце фрейма для дальнейшего использования,

image_index_previous = image_index;

изатем проверьте, что image_index перешагнул 2 с последнего кадра:

if image_index_previous < 2 && image_index >= 2 {
   instance_create(x+20*image_xscale,y,obj_projectile);
}
...