目前我正在制作一个简单的2d平台游戏,我决定在制作游戏的一般概念之前研究物理。我实际上还没有在学校或任何东西学过物理,所以我只是使用google / youtube教程作为我的主要资源。我目前的跳跃工作非常好,但是并排移动并不是我想要的。我希望它使用加速/减速而不是仅以恒定速度递增/递减x位置。现在我尝试使用this网站进行x动作,但这似乎就是我用来跳跃的东西。这是我目前的球员类:
import game.Game;
import game.input.PlayerController;
public class Player {
private float dt = 0.18F, gravity = 9.81F;
public float x, y, dx, dy;
private PlayerController controller;
private boolean jumping, onGround;
public float speed = 7.5F;
public float jh = 60F;
public float vy = 120F;
public Player() {
controller = new PlayerController();
}
public void update() {
controller.update(this);
dy += gravity * dt * (jumping ? -1F : 1F);
if(!jumping && !onGround && dy > vy) dy = vy;
y += dy * dt + 0.5F * gravity * dt * dt;
x += dx;
if (y > Game.height - 32) {
dy = 0;
y = Game.height - 32;
onGround = true;
} else
onGround = false;
if(dy < jh) { jumping = false;}
dx = 0;
}
public void render(Graphics g) {
g.setColor(Color.red);
g.fillRect(x, y, 32, 32);
}
public void moveLeft() {
dx -= speed;
}
public void moveRight() {
dx += speed;
}
public void jump() {
if (onGround) {
jumping = true;
dy -=jh;
}
}
}
在PlayerController类中,当按下左右键时,我只是调用player.moveLeft()和player.moveRight()。
如果有人对如何使运动更平稳有一个好主意,那将非常有帮助。谢谢!