我环顾四周,找不到简单的方法。我有一个动画在发生碰撞时播放,虽然动画无法越过第一帧,直到碰撞检测持续发射时物体完全分离。
有谁知道如何强制动画一直播放或让碰撞检测只检查一次? (虽然之后需要再次运行碰撞检测以重复该过程)。
if (CGRectIntersectsRect(Heli.frame, AstroidBig.frame)) {
animation2.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"Image 1"],
[UIImage imageNamed:@"Image 2"],
[UIImage imageNamed:@"Image 3"],
nil];
[animation2 setAnimationRepeatCount:1];
animation2.animationDuration = 0.4;
[animation2 startAnimating];
[self performSelector:@selector(enemyreset) withObject:nil afterDelay:1];
}
'enemyreset'是将对象从碰撞点重新置于游戏中的功能。
答案 0 :(得分:0)
在上述方法中设置一个标志,表示您正在设置动画(您需要将其添加为属性)。如果您尚未动画,则仅启动动画。然后在enemyreset
方法中重置标记。
if (CGRectIntersectsRect(Heli.frame, AstroidBig.frame)) {
if (!self.alreadyAnimating) {
animation2.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"Image 1"],
[UIImage imageNamed:@"Image 2"],
[UIImage imageNamed:@"Image 3"],
nil];
[animation2 setAnimationRepeatCount:1];
animation2.animationDuration = 0.4;
[animation2 startAnimating];
[self performSelector:@selector(enemyreset) withObject:nil afterDelay:1];
self.alreadyAnimating = YES;
}
}