玩家移动方向逻辑

时间:2015-06-14 07:39:43

标签: java libgdx logic game-engine

将A点和B点视为墙壁,将O点视为墙内的玩家。

所以他们看起来像A O B。

我希望玩家在接触到右点B时向左移动。当他触及左点A时向前移动。

正在渲染屏幕,玩家位置要么向右增加5,要么向左增加-5。

我试图做的事情: 我把它放在if else if语句中。如果A和O之间的距离为零,则玩家位置增加+5。如果O和B之间的距离为零,则玩家位置增加-5。但是一旦他接触到一堵墙(比如右墙),他就会向后移动-5,然后移动到5,再移动到-5,然后移动到5。

我理解为什么会这样,但我没有任何逻辑来实现这一点。

CODE: 对不起,我无法发布实际代码。我在移动互联网上。我没有电脑上网。

假设左侧是50,0,右侧是550,0,右侧是50,0。

//这一切都在呈现。

If (rightWall - PlayerPos <=0){
    PosIncrement = -5;
}
If (leftWall - PlayerPos <=0){
    PosIncrement = 5;
}
translateX (PlayerPos);

1 个答案:

答案 0 :(得分:2)

如果玩家在墙之间,则意味着左墙应始终具有低于玩家位置的位置。玩家位置shuld等于或大于50且等于或小于550

所以正确的逻辑可以是

If (rightWall - PlayerPos <=0){
    PosIncrement = -5;
}
If (PlayerPos - leftWall <=0){
    PosIncrement = 5;
}