【发布时间】:2016-10-05 18:13:56
【问题描述】:
我正在创建一款评分系统类似于 Flappy Bird 中的游戏。
当玩家成功通过左右 障碍我希望我的分数变量增加 1。不过我不知道它背后的逻辑。
现在我有(这是在 for 循环中检查更新方法中的每个障碍):
'over' 确保分数只增加 1。
if (bird.getPosition().y > obstacle.getPosLeft().y) {
if (!over) {
over = true;
score++;
}
当障碍物离开屏幕时(是的,y 在底部是 0,而不是顶部):
if (obstacle.getPosLeft().y + Obstacle.OBSTACLE_HEIGHT < 0){
obstacle.reposition(obstacle.getPosLeft().y + (OBSTACLE_SPACING + Obstacle.OBSTACLE_HEIGHT)* OBSTACLE_COUNT);
over = false;
}
问题是您可以在第一个障碍物对重新定位之前通过 2 个障碍物对,这意味着您只能在 reposition() 被称为障碍物 1 之后获得第二个点。
你会如何解决这个问题?
【问题讨论】:
-
如果你只使用
score++而不是if语句会怎样? -
如果我越过任何障碍,它只会在每个刻度上增加分数。我的意思是,你会得到很多分数(这很酷),但这不是我想做的。
-
你能不能在越过障碍物的时候叫reposition right?由于您已经通过了障碍物,您不再关心它,因此您可以重新定位它。试试看。
-
那么障碍物基本上会被删除,因为它只是重新定位到屏幕上方。我希望它在离开屏幕时重新定位,给人一种有许多障碍物在玩家身上下雨的错觉。当玩家通过它时它就消失了,这很愚蠢。你和我在一起吗?如果我没有任何意义,请告诉我。
-
是的,你的解释很清楚。你是如何获得障碍的?如果有两个,你有两个障碍变量,还是只有两个
Obstacle类的实例?