我是计算机科学家,我是编程新手。为了挑战自己,我决定尝试创建一个简单的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;
}
答案 0 :(得分:0)
如果玩家的x小于0,则将他的x坐标设为3。