1. 程式人生 > >unity2D以最小的角度旋轉到目標方向(y方向為角色的主方向)

unity2D以最小的角度旋轉到目標方向(y方向為角色的主方向)

 

為了讓角色的自身y轉向目標方向,並且以最小角度旋轉,要點是獲得當前方向與目標方向的叉值,從而判斷應該旋轉的方向

float rotateSpeed;

 

//相對目標位置運動
void trackPosition02(Vector3 tarPosition)
{
Vector3 targetDir = tarPosition - transform.position;
Vector3 up = transform.up;
float angle = Vector3.Angle(targetDir, up);
if (angle <= Time.fixedDeltaTime * rotateSpeed) return;//判斷角度是否小於臨界值,如果小於,那麼不需要旋轉,此處用於避免旋轉抖動
Vector3 cross = Vector3.Cross(up, targetDir);
if (cross.z > 0) transform.Rotate(new Vector3(0, 0, rotateSpeed0* Time.deltaTime)); else transform.Rotate(new Vector3(0, 0, -rotateSpeed0* Time.deltaTime));
}

可能unity提供了更簡單的判定方式,知道的老兄留個評論