私は一定の期間にわたって正確に90度にゆっくりと変化する関数を書いています。これまでのところすべてがうまくいきました。変換センターを中心に回転するのではなく、ポイントを中心に回転させる方法を理解するだけです。Unity3d時間の経過とともに特定の点を中心に回転する
protected bool _isRotating = false;
public IEnumerator RotateWithEasing(GameHelper.Axis axis, Vector3 isolatedAxisPoint, float inTime)
{
if(_isRotating)
{
yield break;
}
_isRotating = true;
var degrees = this.GetDegreesFromAxis(axis);
Quaternion fromAngle = transform.rotation;
Quaternion toAngle = Quaternion.Euler(transform.eulerAngles + degrees);
for (float t = 0f; t < 1f; t += Time.deltaTime/inTime)
{
transform.rotation = Quaternion.Lerp(fromAngle, toAngle, t);
yield return null;
}
_isRotating = false;
}
誰もが、それは指定されたisolatedAxisPointの周りを回転するので、どのように私はこれを変更することができ、正しい方向に私を指す助けることができますか?
点の周りに円を描き、その円に沿って移動しますか? – Master117
それはうまくいくように聞こえますが、私は「quaternion.Lerp」または「Quaternion.Slerp」を使用しています。これは –
のためにあなたは非常にうまくいくかもしれません(http:// docs。 unity3d.com/ScriptReference/Transform.RotateAround.html)を「速度*デルタタイム」と組み合わせれば、簡単にタイミングを追加することができます –