Java Android 2D游戏 - 虚拟边框发行



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

我在代码方面拥有的本质上是update()方法中的if语句,该语句检查播放器字符的x值是否为<0(对于左边框),如果该语句为true,则它可以防止播放器再次单击左键,直到单击右键为止(播放器的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。

最新更新