我有一个你在平台上反弹的游戏。我希望每次你在平台上反弹时得分都会增加1。但是,它每次都会增加一些随机数(如10)。
在Game.h中我有:
int ScoreNumber;
IBOutlet UILabel *ScoreLabel;
-(void)Score;
...
在Game.m中我有:
-(void)Score {
ScoreNumber = ScoreNumber +1.0;
ScoreLabel.text = [NSString stringWithFormat:@"%i", ScoreNumber];
}
-(void)PlatformMoving {
if (CGRectIntersectsRect(Bird.frame, Platform1.frame)) {
[self Score];
}
}
...
这应该每次计数1,但计数超过1
答案 0 :(得分:3)
如果在(无效)分数方法中放置断点,您可能会看到每次反弹时多次调用它,因为矩形可能会重叠多个帧。您可以在(void)PlatformMoving方法中放置一个检查,以便在再次调用Score之前查看上次测试是否失败。这样可以确保在连续2帧中永远不会调用分数,并且应该防止每次反弹得分超过一个点。