unity3d - 如何在 Unity 中进行平移?
问题描述
我是 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。
推荐阅读
- perl - 如何让 Alien 使用现有的 tarball 而不是下载?
- javascript - 如何使用 Angular 8 为某些回调(传单库)提供事件处理程序
- sql - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表“电影”中插入标识列的显式值
- angular - 带有 plesk 的身份服务器:找不到主题为“CN=SigningCertificate”的有效证书
- javascript - 仅显示表中选定的行,其他行将在同一时间使用 Javascript 隐藏
- django - 如何在 django 中由两个不同的用户使用一个视图?
- android - 显示通话记录中所有未保存/未知电话号码的列表
- azure - 无法在 Azure 数据工厂中的我的 github 组织中选择私有存储库
- php - php中的preg_replace删除多次在sting中的标签
- calendar - 如何按特定日期或日期范围加载 tui-calendar