Java Android 2D 游戏 - 虚拟边框问题

Java Android 2D Game - Issue with virtual borders

我是一名计算机科学专业的学生,​​我是编程新手。为了挑战自己,我决定尝试创建一个简单的 2D android 游戏。 我遇到的问题与边界有关。我有一个可以沿 X 轴左右移动的玩家角色,尽管该角色不应该离开屏幕。这在大多数情况下都有效,但是按住将角色发送到 left/right 的按钮将使角色穿过边界。

我所拥有的代码本质上是 update() 方法中的一个 if 语句,它检查玩家角色的 x 值是否 < 0(对于左边框),如果该语句为真,则它防止玩家再次点击左键,直到右键被点击(玩家的 x 值再次大于 0)。

我该如何解决这个问题?我的第一个想法是,我可以每 5 毫秒左右检查一次游戏状态,如果玩家的 x 值等于或小于 0,则将移动速度设置为 0,直到单击右键,但我这样做了不知道如何执行此检查。

您是否知道如何实施或是否有更好的解决方案?非常感谢!

相关代码如下:

//In class GamePanel
public void update() {
    if (player.getX() <= 4) {
       player.setTooFarLeft(true);
       MOVESPEED = 0;
    }
}
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        final float scaleFactorX = getWidth() / (WIDTH * 1.f);
        final float scaleFactorY = getHeight() / (HEIGHT * 1.f);
        Rect right = new Rect((int) ((WIDTH * scaleFactorX) / 3 + (int) (WIDTH * scaleFactorX) / 3), 0, (int) (WIDTH * scaleFactorX), (int) (HEIGHT * scaleFactorY));
        Rect left = new Rect(0, 0, (int) (WIDTH * scaleFactorX / 3), (int) (HEIGHT * scaleFactorY));
        int x = (int) event.getX();
        int y = (int) event.getY();
        //Same for right
        if (left.contains(x, y) && player.getTooFarLeft()==false) {
            if (!player.getPlaying()) {
                player.setPlaying(true);
            } else {
                player.setMovement(4);
                player.setLeft(true);
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        player.setMovement(8);
                    }
                }, 1000);
            }
            return true;
        }

如果玩家的 x 小于 0,则将他的 x 坐标设置为 3。