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

时间:2015-05-07 16:22:48

标签: java android 2d border

我是计算机科学家,我是编程新手。为了挑战自己,我决定尝试创建一个简单的2D安卓游戏。 我遇到的问题与边界有关。我有一个可以沿着X轴左右移动的玩家角色,尽管这个角色不应该出现在屏幕之外。这大部分都有效,但按住向左/向右发送字符的按钮会使角色通过边框。

我在代码方面的内容实际上是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;
        }

1 个答案:

答案 0 :(得分:0)

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