Bootstrap

max unity 方向_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提供了更简单的判定方式,知道的老兄留个评论

二.利用角度符号判断转到目标方向

这里原理和一相同,只是判断角度的方式是使用判断两者的角度差,而不是向量的叉值

float angle = Vector3.SignedAngle(transform.up, target.position -

;