球员运动方向逻辑

Player Movement Direction Logic

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

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

我希望玩家在触及右点 B 时向左移动。在触及左点 A 时向右移动。

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

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

我明白为什么会这样,但我没有任何逻辑来实现它。

代码: 抱歉,我无法 post 实际代码。我在移动互联网上。我没有电脑上网。

假设左墙在 50, 0,右墙在 550, 0,玩家在 50, 0。

//这一切都在渲染中。

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

如果玩家应该 墙之间,这意味着左边的墙应该始终有一个低于玩家位置的位置。玩家位置应等于或大于 50 且等于或小于 550

所以正确的逻辑可以是

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