【发布时间】:2018-07-13 21:16:39
【问题描述】:
我是 Unity 的初学者,我在 Unity 中创建了一个 3D 应用程序。 对于旋转,我正在围绕 3d 模型旋转相机。 对于平移,如果我移动 3d 模型,我必须跟踪坐标 (x,y,z)。但是如果我移动相机,由于 LookAt() 是在旋转函数中实现的,它看起来不像执行了平移手势(同时从旋转和平移转移)。 有人可以为这个问题提出一个解决方案吗?
【问题讨论】:
我是 Unity 的初学者,我在 Unity 中创建了一个 3D 应用程序。 对于旋转,我正在围绕 3d 模型旋转相机。 对于平移,如果我移动 3d 模型,我必须跟踪坐标 (x,y,z)。但是如果我移动相机,由于 LookAt() 是在旋转函数中实现的,它看起来不像执行了平移手势(同时从旋转和平移转移)。 有人可以为这个问题提出一个解决方案吗?
【问题讨论】:
如果您想平移对象,可以使用矢量数学来实现。
例子:
new Vector3 lookAt = ...;
new Vector3 offset = ...;
cameraTransform.LookAt(lookAt + offset);
如果您想在平移和旋转运动之间进行切换,您可以使用状态机。
switch (state)
{
case CHANGEPAN:
// do something
break;
case CHANGEROT:
// do something
break;
}
在平移时,如果您根本不想旋转相机,则需要对相机位置进行等效平移。你也可以用向量数学来做到这一点,因为变换中的位置只是一个 Vector3。
【讨论】: