我一直试图让我的角色在动画的特定帧上射击弹丸。但是,有时它可以工作,而有时它只是忽略了创建射弹。
我尝试使用警报而不是检查图像索引,但是我无法将计时器调低到无法获得完美定时的程度。
我认为图像速度为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;
}
如果任何人都可以看到代码中的某些错误和/或知道该错误可能出在哪里,那么将不胜感激。
答案 0 :(得分:0)
我认为图像速度为0.2而不是1可能是个问题。
这是可能的-如果您的动画具有不同的速度,并且您不倾向于在动画开始时重置image_index,则可能会以不同的开始索引(假设为0.1)结束,而当将0.2添加到时,该索引不会恰好等于2.0他们。通常,检查框架是否为数字通常不是一个好习惯。
您可以将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);
}