我正在尝试使用CGRectIntersectsRect更新我的分数,并且我想在每次两个图像相互碰撞时增加分数。但是,我的分数有时不会显示周期性,但是会增加一个单位,但是当两个UIimage高速碰撞时会随机增加。这是我的代码:

-(void)Collision{

if (CGRectIntersectsRect(Ball.frame, Player.frame)) {

    PlayerScoreNumber = PlayerScoreNumber + 1;
    PlayerScore.text = [NSString stringWithFormat:@"%i", PlayerScoreNumber];

    Y = arc4random() %5;
    Y = 0-Y;

}

两个UIImages是'ball'和'racket',我想在每次球撞击球拍时增加自己的得分。请帮忙...

最佳答案

我怀疑您对同一次碰撞进行了两次(或更多次)计数,因此您将必须保持有关碰撞的状态并记住何时已经看到当前碰撞:

在实现文件中创建一个新的实例变量,如下所示:

@interface MyClass ()
{
    BOOL _ballCollidedWithPlayer;
}

并像这样管理状态:
-(void)Collision{

    BOOL collided = CGRectIntersectsRect(Ball.frame, Player.frame);
    if (collided) {
        if (_ballCollidedWithPlayer)
            return;    // Nothing to do; we already know about this collision

        PlayerScoreNumber = PlayerScoreNumber + 1;
        PlayerScore.text = [NSString stringWithFormat:@"%i", PlayerScoreNumber];

        Y = arc4random() %5;
        Y = 0-Y;
    }
    _ballCollidedWithPlayer = collided;
}

10-06 03:39