如何修复:某些帧上的代码不是 运行

How to fix: code not running on certain frames

我一直在尝试让我的角色在特定的动画帧上发射弹丸。但是,有时它会起作用,而有时它只是忽略创建射弹。

我试过使用警报而不是检查图像索引,但我无法将计时器设置得足够低以获得最佳时间。

我认为图像速度可能是 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;
}

如果有人发现代码有问题and/or知道这可能出了什么问题,我们将不胜感激。

I think it may be a problem with the image speed being 0.2 instead of 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);
}