我正在尝试使用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'并且'球拍' ,每当球击中球拍时,我想增加得分。请帮忙......
答案 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;
}