如何暂时停止碰撞检查

时间:2014-09-02 17:31:18

标签: ios xcode animation collision

我环顾四周,找不到简单的方法。我有一个动画在发生碰撞时播放,虽然动画无法越过第一帧,直到碰撞检测持续发射时物体完全分离。

有谁知道如何强制动画一直播放或让碰撞检测只检查一次? (虽然之后需要再次运行碰撞检测以重复该过程)。

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'是将对象从碰撞点重新置于游戏中的功能。

1 个答案:

答案 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; 
    }
}