ここにあなたが表示されます方法のいくつかは、何をすべきかの簡単な説明です:減速しばらく方向に移動
this.bounds
は:代表Vector2d
返します:船の境界(長方形)this.bounds.getCenter()
を返します。船の境界の中心。getVelocity()
:ていない線形補間:角度(ラジアン)Vector2d#interpolate(Vector2d target, double amount)
が与えられたとき、正規化された、新しいVector2d
:船の速度(毎フレームを位置決めするために添加)new Vector2d(angle)
を表しVector2d
!あなたがinterpolate
コードを表示したい場合は、ここでは(クラスVector2d
に)ある:public Vector2d interpolate(Vector2d target, double amount) { if (getDistanceSquared(target) < amount * amount) return target; return interpolate(getAngle(target), amount); } public Vector2d interpolate(double direction, double amount) { return this.add(new Vector2d(direction).multiply(amount)); }
プレイヤーがキーを押していないとき、船はただ減速する必要があります。ここで私はそのために何をすべきかです:しかし、今私は、目標に向かって行っている間、それがドリフトしたい実現しました
public void drift() {
setVelocity(getVelocity().interpolate(Vector2d.ZERO, this.deceleration));
}
。私はこれを試してみた:(Iは1の大きさを有する角度ベクトルに向かって補間してるので)当然の
public void drift(Vector2d target) {
double angle = this.bounds.getCenter().getAngle(target);
setVelocity(getVelocity().interpolate(new Vector2d(angle), this.deceleration));
}
これは、これまで実際にゼロ速度に到達しません。また、ターゲットが非常に遅くなるとターゲットの方向に実際に「ドリフト」するだけです。
私はこれをどのように達成することができますか?私はそれを理解できません。これは大きな問題ですので、ありがとうございます。
これは私が作った大きなライブラリを使用しています。あなたが何か物事について何か質問があれば、私はそれをほとんどカバーしていると思います。
私はあなたが何をしようとしているのか分かりません。減速させたいだけなら、速度ベクトルの長さを短くしてください。 [Rayleigh drag](https://en.wikipedia.org/wiki/Drag_(physics)#Drag_at_high_velocity)とすると、ドラッグの力は速度で2次的に大きくなります。 [Stokes drag](https://en.wikipedia.org/wiki/Drag_(physics)#Very_low_Reynolds_numbers:_Stokes.27_drag)の場合、線形に拡大します。一定の船積質量と一定の更新時間枠を仮定すると、あなたは次のようなことを行います: 'dragForce = constant * v.length()(^ 2); v = v *(1 - dragForce/v.length()) '。 –
Btw、あなたの質問に不可欠な場合は、外部コンテンツにリンクしないでください。私が見る限り、あなたの補間関数はゼロベクトルを入力すればゼロベクトルを返します(その長さは 'amount * amount'よりも小さいので)。 –
@NicoSchertler申し訳ありませんが、私は何を試しても、ここで書式設定されていなかったので、pastebinに投稿しなければなりませんでした。補間は機能します(私は何度も使用します)。今は、キーが押されていなければ、船は完全に停止するまで減速し、最後の方向に移動します。私はこの船を同じようにするが、ある方向にしたい。前に、私はちょうど0に向かって速度を補間することができます。しかし、私は方向を変えることができる間にそれが減速したいならば、私は何をすべきかわかりません。まだ理解しにくい場合は、画像を投稿してください。 – MCMastery