【发布时间】:2018-01-16 11:15:23
【问题描述】:
我目前正在冒险并陷入困境,希望有人可以帮助我: 我想让相机面对一个给定的点,我这样做的方式是这样的:
public void LookAtPosition(Vector3 lookPosition, float speed)
{
StartCoroutine(LookAtTransformCorutine(lookPosition, speed));
}
public void LookAtPosition(Transform lookPosition, float speed)
{
LookAtPosition(lookPosition.position, speed);
}
public IEnumerator LookAtTransformCorutine(Vector3 lookPosition, float speed)
{
StopLookingAtMouse();
Vector3 direction = (lookPosition - transform.position).normalized;
Quaternion targetRotation = transform.rotation * Quaternion.FromToRotation(transform.forward, direction);
while (Quaternion.Angle(transform.rotation, targetRotation) > 1f)
{
transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, speed);
transform.localRotation = Quaternion.LookRotation(transform.forward);
yield return new WaitForEndOfFrame();
}
}
但问题是它只在相机旋转 0、0、0、1 时才有效
【问题讨论】:
标签: c# unity3d camera rotation quaternions