车轮转动不正常,如何修理?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了车轮转动不正常,如何修理?相关的知识,希望对你有一定的参考价值。
我有一个非常基本的汽车模型。到目前为止,我已经设法让车轮以两种方式之一旋转:
- 转动时,车轮在局部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;
}
答案
Transform的“rotation”变量是Quaternion
,因此您在Update的第二行代码中尝试执行的操作将打破旋转。相反,您将不得不再次使用transform.Rotate
并从变换的局部欧拉角度访问旋转的z值。
wheel[0].transform.Rotate(0, wheel[0].GetComponent<WheelCollider>().steerAngle - wheel[0].transform.localEulerAngles.z, 0);
以上是关于车轮转动不正常,如何修理?的主要内容,如果未能解决你的问题,请参考以下文章