gpt4 book ai didi

c# - Unity3D C# 旋转后计算正确的前向

转载 作者:太空狗 更新时间:2023-10-29 23:01:41 26 4
gpt4 key购买 nike

我开始使用 Unity 进行开发。我正在做类似的事情:

    if(Input.GetKey(KeyCode.A))newValues[1]-=this.turnSpeed*(float)Time.deltaTime;
if(Input.GetKey(KeyCode.D))newValues[1]+=this.turnSpeed*(float)Time.deltaTime;
transform.Rotate(0, newValues[1], 0);


if(Input.GetKey(KeyCode.W))newValues[0]+=this.speed*transform.forward.z*(float)Time.deltaTime;
if(Input.GetKey(KeyCode.S))newValues[0]-=this.speed*transform.forward.z*(float)Time.deltaTime;


transform.position = new Vector3(transform.position.x, transform.position.y, (float)newValues[0]);

所以我旋转并且我可以移动,但它只在 Z 线上移动,我知道我称之为 Z 特定运动。但是使用 Javascript 我可以做一些事情

     transform.forward+=this.speed*transform.forward*(float)Time.deltaTime;

所以我不需要执行新的向量处理并复制到一个单独的变量,它就像一个魅力一样工作,使用旋转并在旋转时用作他自己的方向。

最佳答案

你可能会误解 transform.forward 的用法。transform.forward 只是一个矢量,告诉您游戏对象面向哪个方向,它取决于 transform.rotation。

如果你想移动你的游戏对象,总是使用transform.position:

 transform.position += this.speed * transform.forward * (float)Time.deltaTime;

关于c# - Unity3D C# 旋转后计算正确的前向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9642834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com