私は船のホイールを持っています。プレーヤーは回転できます。私は現在、角度の変化を記録しており、これは合計角度に加えられます。私は船のホイールが何度回ったかを調べることができます。これはすべて正常に動作します。時間差の平均としての回転の差異を見つけるC#
void Update()
{
//Record Amount of Wheel Turns
currentAngle = wheelRectTransform.transform.rotation.eulerAngles.z;
angleChange = Mathf.DeltaAngle(currentAngle, previousAngle);
if ((Mathf.Abs(angle + angleChange)/360) <= wheelTurnsUntilRudderAtMaxAngle)
{
angle += angleChange;
}
totalWheelTurns = angle/360;
shipStats.RudderAngle = totalWheelTurns/wheelTurnsUntilRudderAtMaxAngle;
previousAngle = currentAngle;
}
しかし、私はまた、時間をかけて平均角度変化を記録したいと思います。そうすれば、ホイールが左右に回転しているかどうかを正確に知ることができます。
私は実際にこの
if (angleChange < 0)
{
// Going Left
}
else if (angleChange > 0)
{
// Going Right
} else
{
// Not moving
}
のような単純なもののプレーヤーは非常に、非常にゆっくりとホイールを回転している場合しかし、時折フレームの角度差が0であると「移動しない」として記録さを試してみました。
平均的な角度の変化を短時間で見つけることができると思うので、時間の経過とともに角度を0に設定しようとしました。
newAngleDifference = Mathf.Lerp(angleChange, 0, Time.deltaTime * 0.2f);
これは、私はとにかく0することができ「angleChange」を使用しているとして、それは私に同じフィードバックを与え、動作しませんでした。
ありがとうございます!
ジム
私はいくつかの動きを試作しているので、コード全体が混乱しています。しかし、私はあなたのためにここに入れました。私は現在、何らかのLerpを使用して方向を確認していますが、完璧ではありませんが、それは可能です。 http://pastebin.com/kGLrUYVu – Jim
はい、z方向です。剛体はありません。 – Jim