所以我正在开发一款游戏并对游戏系统进行编码。我希望它是这样的,当我向下滚动的对象等于与#34; Box"相同的y.co-ordinate时。对象,得分系统在得分上加一。
然而,在尝试这个时,社交不会更新并保持在0.我不太清楚为什么,请你告诉我哪里可能出错了以及如何解决它。
这是我用来编码乐谱系统的代码。任何帮助将不胜感激,谢谢。
-(void)Score{
ScoreNumber = ScoreNumber + 1;
ScoreDisplay.text = [NSString stringWithFormat:@"%i", ScoreNumber];
}
[视图中还有一些代码可以做到。但问题不在于我之前使用过的这部分代码,而且工作正常。]
这是它要实现但不起作用的地方......
if (ROne.center.y == IView.center.y) {
[self Score];
}
if (RTwo.center.y == IView.center.y) {
[self Score];
}
if (RThree.center.y == IView.center.y) {
[self Score];
}
if (RFour.center.y == IView.center.y) {
[self Score];
}
if (RFive.center.y == IView.center.y) {
[self Score];
}
if (RSix.center.y == IView.center.y) {
[self Score];
}
答案 0 :(得分:0)
您需要仔细考虑游戏代码的逻辑:
正在发生的事情是物体正在经过蜱之间的边界,因此该方法无法检测到它(即考虑y == 3
的边界,而物体来自{{ 1}}到y == 1
一个单一的勾号。)
您需要做的是持有一个标志,显示对象是否已越过边界,并仅检查边界条件是否为此标志为false。放置此标志的最佳位置是对象本身。
类似的东西:
y == 5
您还需要考虑使用六个对象的数组,而不是6个单独的变量。
答案 1 :(得分:0)
您的问题很可能是y增量不会累加到目标对象的y坐标,那么它就不会严格相等。你只需要通过它。这就是为什么> =工作,除非你通过它,它将继续增加分数。
所以,你需要测试的是“路过”。也就是说,在移动ROne.center.y < IView.center.y
之前和移动ROne.center.y >= IView.center.y
之后。这是有效检查“ROne刚到达所需高度”的唯一条件。
或者,您可以使用>=
并在arrived
上使用标记ROne
告诉它退出计算分数。 arrived
为真时,将(ROne.center.y >= IView.center.y && ROne.arrived)
标志设置为false。然后,当您决定将对象重置为屏幕顶部时,将arrived
标志重置为true。