加速度方程

时间:2016-08-15 21:23:12

标签: java equation acceleration

我制作的游戏中物体需要以某种方式加速和减速。

我有5个变量:

  1. velX(当前x速度),
  2. velY(当前y速度),
  3. desiredVelX(期望的velX值),
  4. desiredVelY(所需的velY值)和
  5. accelTime(对象加速的速度)。
  6. 基本上,我想要一个方程式,当期望值为10,0和-10时,可以将valX加速到desiredValX,此时每秒调用128次。和基于Y的变量的相同方程式。

    我真的不知道如何为这些问题生成方程式,所以对此的一些见解也会受到赞赏。

    这是我目前的代码:

    public class Player {
    
    private double x;
    private double y;
    private double velX;
    private double velY;
    private double desiredVelX;
    private double desiredVelY;
    private double accelTime = 128 / 2; //Half second to accelerate fully
    
    
    public Player(double x, double y, Game g)
    {
        this.x = x;
        this.y = y;
    }
    
    public void tick()
    {
        if(velX!=desiredVelX){
            *Equation*
        }
    
        if(velY!=desiredVelY){
            *Equation*
        }
    
        x+=velX;
        y+=velY;
    }
    
    public void accel(boolean d, double speed){
        if(d){desiredVelX = speed;}
        else{desiredVelY = speed;}
    }
    }
    

1 个答案:

答案 0 :(得分:1)

我看到你已经回答了这个问题,但我只想提出一个小改动。尝试使用一个名为acceleration的变量并在每一帧中添加它。

所以当你第一次开始加速时,

acceleration = (desiredVelX - velX)/accelTime

然后在循环中

velX = max(min(velX + acceleration, desiredVelX), 0)

这将为您提供恒定的加速度,然后在达到最大值后停止加速。最小和最大通话确保您不会超出限制。之后如果您决定增加最大速度,它将很容易处理,而不需要为每个最大速度提出新的加速度常数。

基于力和重量的逼真物理

在现实世界中,加速度受力和重量的限制。在汽车中,发动机输出F力并称重W.此车的加速度则为F / W.

根据您的游戏,您可能还有其他需要更改速度的物体。有些人可能比其他人更重或更大,或者拥有比其他人更多的力量。

force = 5 # Your force here
acceleration = force / weight

然后将其插入另一个等式中,现在根据您加速的物体的重量有不同的加速度。

基于真实物理学的速度和加速度将有助于实现爆炸,重力炸弹,浮动平台,子弹反弹等等。现实的物理学并不总是令人满意,所以你可能不会想要这个,但我想我会无论如何都要建议。