【发布时间】:2012-03-10 00:35:23
【问题描述】:
我开始使用 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;
所以我不需要执行新的向量处理并复制到单独的变量,它就像一个魅力,使用旋转并在旋转时用作自己的方向。
【问题讨论】:
-
你应该编辑你的标题和标签。使用的统一标签是指 MS 应用程序块中的依赖注入容器。您可能指的是 unity-3D,如果这是用于游戏,您可能需要添加适当的标签。
-
如果将
transform.forward+=this.speed*transform.forward*(float)Time.deltaTime;放在C# 代码中会发生什么? Javascript 和 C# 都编译为相同的 .NET 中间语言,因此如果编码稍有不同,几乎任何一种语言都可能在另一种语言中实现。 -
它不起作用,它是一个只读变量