概要
Quaternion.FromToRotation()
に角度制限が欲しかったので関数を作りました。
下図は 45 度の制限をかけてみた例です。
真ん中は、右の角度に対してその方向へ45度まで向くようにしています。
コード
お手持ちの QuaternionUtil クラスに追加してご利用ください。
QuaternionUtil.cs
using UnityEngine;
public static class QuaternionUtil
{
public static Quaternion FromToRotationLimit(Vector3 from, Vector3 to, float max)
{
var tangent = Vector3.Cross(from, to);
var angle = Vector3.SignedAngle(from, to, tangent);
return Quaternion.AngleAxis(Mathf.Min(angle, max), tangent);
}
}
間違いや改善点がありましたらコメントをいただけると助かります。