如何修复:某些帧上的代码不是 运行
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);
}
我一直在尝试让我的角色在特定的动画帧上发射弹丸。但是,有时它会起作用,而有时它只是忽略创建射弹。
我试过使用警报而不是检查图像索引,但我无法将计时器设置得足够低以获得最佳时间。
我认为图像速度可能是 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);
}