我正在尝试使用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;
}