【发布时间】:2012-07-23 09:43:59
【问题描述】:
我有一个第一人称相机控制器,实现如下:
float rotSpeed = 20.0f;
xRotation += deltaPos.y * rotSpeed * Time.deltaTime;
yRotation += deltaPos.x * -rotSpeed * Time.deltaTime;
while(xRotation > 360.0f) xRotation -= 360.0f;
while(xRotation < 0.0f) xRotation += 360.0f;
while(yRotation > 360.0f) yRotation -= 360.0f;
while(yRotation < 0.0f) yRotation += 360.0f;
cam.transform.rotation = Quaternion.Euler(xRotation, yRotation, 0);
我希望相机能够捕捉到 3D 空间中的某个目标。
如果我使用 transform.LookAt(target),相机控制器只会将视图重新捕捉到它来自的位置,并且我无法在调用 LookAt() 后从相机的旋转设置 xRotation 和 yRotation,因为LookAt() 有时会产生一个带有 Z 旋转的四元数。
那么我怎样才能找到将相机指向某个目标所需的 X 和 Y 旋转?
【问题讨论】:
-
几年前我写了几个用于角度转换的 c# 类。他们可以在球坐标、滚动/俯仰/偏航、章动/进动/旋转或任何任意欧拉角之间进行转换。我会看看我能不能找到它。这个页面很有帮助:en.wikipedia.org/wiki/…