首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请在统一中解释transform.rotate

请在统一中解释transform.rotate
EN

Stack Overflow用户
提问于 2020-04-12 10:34:07
回答 1查看 330关注 0票数 0

有人能解释为什么这种方法不能作为正常的fps相机运动吗?我将Z-Axis设置为0,但测试时它会发生变化。我可以使用四元数,但我真的不明白为什么这个方法不能工作。

代码语言:javascript
复制
void onCameraLook() {
    mouseX = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity;
    mouseY = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity;

    transform.Rotate(-mouseY, mouseX, 0, Space.Self);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 16:09:01

如果使用Rotate调用Space.Self,则对象将围绕其本地轴旋转。

对于“普通fps相机”,这对于垂直旋转来说很好,你想要绕着局部x/右轴旋转,但是对于水平旋转,你想要物体围绕全局y/向上轴旋转。有关更详细的帖子,请参阅rotating an object on two axes

所以你的代码应该是:

代码语言:javascript
复制
void onCameraLook() {
    mouseX = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity;
    mouseY = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity;

    transform.Rotate(-mouseY, 0, 0, Space.Self);
    transform.Rotate(0, mouseX, 0, Space.World);        
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61170077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档