0

我是 Unity 的新手。如果我按下键盘上的“向上”按钮,我想做这辆车的轮子(汽缸)会转动。这是我写的代码:

var forwardSpeed: float = 3;

function Start () {

}

function Update () {
    var forwardMoveAmount = Input.GetAxis("Vertical")*forwardSpeed;
    transform.Rotate(0, forwardMoveAmount, 0);
}

好的。车轮在转动,但我的车还在原地。我应该怎么做才能移动这辆车? 在此处输入图像描述

PS:你能解释一下,当我使用Y轴时,为什么这个圆柱体旋转正确?应该是z。

4

3 回答 3

2

对于基于物理的轮子,您可能需要轮子对撞机。它们的使用在这里得到了很好的记录:

http://docs.unity3d.com/Documentation/Components/class-WheelCollider.html

于 2013-04-08T15:21:44.487 回答
1

您将距离标量应用于旋转函数,而不是平移(移动)对象。

transform.Rotate将旋转对象。

transform.Translate将移动对象。

在你的桌子上挑选一个物体。如果将其旋转 90 度两次,它将旋转 180 度,但仍然在同一个位置。现在想象一下,每次旋转该对象时,都会将它朝它所面对的方向移动几英寸。4 个循环后,物体将完成 360 度的完整循环。

要在代码中表示这一点:

var forwardSpeed: float = 3; // Tweak me
var turnAngle:    float = 1; // Tweak me

function Start () {

}

function Update () {
    // Rotate first
    transform.Rotate(0, Vector3.right * turnAngle, 0);
    // Move forward along the rotated axis
    transform.Translate(0, Vector3.forward * forwardSpeed, 0);
}
于 2013-04-06T17:17:46.813 回答
0

您还需要同时显式移动汽车,在父汽车对象上使用大概 , 或类似的东西transform.positiontransform.Translate()

于 2013-04-06T17:07:31.623 回答