使用CGRectIntersectsRect更新我的游戏得分

时间:2014-08-06 12:55:11

标签: ios objective-c xcode uiimage

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

-(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'并且'球拍' ,每当球击中球拍时,我想增加得分。请帮忙......

1 个答案:

答案 0 :(得分:0)

我怀疑你是在计算相同的碰撞两次(或更多次),所以你必须保持关于碰撞的状态并记住当你已经看到当前的碰撞时:

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

@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;
}