我是计算机科学家学生,我是编程的新手。为了挑战自己,我决定尝试创建一个简单的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。