オブジェクトをある程度加速したり減速させたりするゲームを作っています。アクセラレーション式
- velX(電流×速度)、
- velY(現在のy速度)、
- desiredVelX(所望velX値)、
- desiredVelY(所望velY値:
Iは5つの変数を有します)、
- accelTime(オブジェクトが加速する速さ)。
基本的には、必要なValX = 10、0、-10の場合、valXをdesiredValXに加速する式が必要です。そして、Yベースの変数のための同じ方程式。
私は本当にこれらのような問題の方程式を生成する方法を考えていないので、それについてのいくつかの洞察も高く評価されます。 velX += (desiredVelX - velX)/accelTime
私の目的のためにうまく動作します:、私は式があること
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;}
}
}
「max min」コンボは、「負のスピード」の場合と同じように動作しません。スワップが必要な場合は、「min max」(境界を入れ替えずに)です。 – charlie