在2d平台中更平滑的x运动

时间:2016-04-02 23:35:23

标签: java physics acceleration

目前我正在制作一个简单的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()。

如果有人对如何使运动更平稳有一个好主意,那将非常有帮助。谢谢!

0 个答案:

没有答案