车轮不能正常旋转,如何修理?

时间:2015-09-26 05:35:05

标签: c# unity3d rotation

我有一个非常基本的汽车模型。到目前为止,我已经设法让车轮以两种方式之一旋转:

  • 当车轮转动
  • 时,车轮在局部Z轴上旋转
  • 当车轮向前或向后行驶时,车轮在本地Y轴上旋转

他们都工作正常,但我不能让他们两个同时工作。我绝对难过,它开始惹我生气!我也一直在尝试关注此视频(https://www.youtube.com/watch?v=0jvJ2FMvbBs)并出现以下错误:

  • 无法修改' UnityEngine.Transform.rotation'的值类型返回。考虑将值存储在临时变量中。

有人可以查看我的代码并告诉我我做错了什么吗?提前谢谢。

代码:

public Wheels[] wheel;
public float enginePower = 20f;
public float turnPower = 20f;

void FixedUpdate () {
    float torque = Input.GetAxis("Vertical") * enginePower;
    float turnSpeed = Input.GetAxis("Horizontal") * turnPower;

    //4 Wheel Drive
    wheel[0].Move(torque);
    wheel[1].Move(torque);
    wheel[2].Move(torque);
    wheel[3].Move(torque);

    //Front Wheel Steering
    wheel[0].Turn(turnSpeed);
    wheel[1].Turn(turnSpeed);
}

void Update () {
    wheel[0].transform.Rotate(0, 0, wheel[0].GetComponent<WheelCollider>().rpm / 60 * 360 * Time.deltaTime);

    //Only one wheel is shown for simplicity

    wheel[0].transform.rotation.y = wheel[0].GetComponent<WheelCollider>().steerAngle - wheel[0].transform.rotation.z;
}

1 个答案:

答案 0 :(得分:0)

Transform的“rotation”变量是Quaternion,因此您在Update的第二行代码中尝试执行的操作将打破旋转。相反,您将不得不再次使用transform.Rotate并从变换的局部欧拉角度访问旋转的z值。

wheel[0].transform.Rotate(0, wheel[0].GetComponent<WheelCollider>().steerAngle - wheel[0].transform.localEulerAngles.z, 0);