C# 使用C语言实现Unity 3D中的方向盘转向#
谈到用C编写脚本,我是个新手,我已经被这个问题困扰了好几天了。我制作了这个脚本,这样我的车可以在地图上移动,轮子在Z轴上旋转。脚本:C# 使用C语言实现Unity 3D中的方向盘转向#,c#,unity3d,monodevelop,C#,Unity3d,Monodevelop,谈到用C编写脚本,我是个新手,我已经被这个问题困扰了好几天了。我制作了这个脚本,这样我的车可以在地图上移动,轮子在Z轴上旋转。脚本: using UnityEngine; using System.Collections; public class CarMovement : MonoBehaviour { public Transform wheelFLTrans; public Transform wheelFRTrans; public Transform whe
using UnityEngine;
using System.Collections;
public class CarMovement : MonoBehaviour
{
public Transform wheelFLTrans;
public Transform wheelFRTrans;
public Transform wheelBRTrans;
public Transform wheelBLTrans;
public float MotorForce;
public float Steerforce;
public WheelCollider GumaPD;
public WheelCollider GumaPLj;
public WheelCollider GumaZD;
public WheelCollider GumaZLJ;
void Start()
{
}
// Update is called once per frame
void Update()
{
float v = Input.GetAxis("Vertical") * MotorForce;
float h = Input.GetAxis("Horizontal") * Steerforce;
GumaPD.motorTorque = v;
GumaPLj.motorTorque = v;
GumaPD.steerAngle = h;
GumaPLj.steerAngle = h;
wheelFLTrans.Rotate(Vector3.forward * GumaPLj.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg);
wheelFRTrans.Rotate(Vector3.forward * GumaPD.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg);
wheelBRTrans.Rotate(Vector3.forward * GumaZD.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg);
wheelBLTrans.Rotate(Vector3.forward * GumaZLJ.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg);
wheelFRTrans.eulerAngles = new Vector3(0f, Input.GetAxis("Horizontal"), 0f);
}
}
现在我的问题是:
我想在驾驶汽车通过地图时添加方向盘。就像我按下A键或D键一样,车轮将根据我按下的键(A键或D键)转向。我尝试过这一行代码:
**wheelFRTrans.localEulerAngles = new Vector3(0, wheelFR.steerAngle, 0);**
这是可行的,但由于某种原因,我的前轮停止转动:(.有人能帮我解决这个问题吗,我已经被困在这个问题上好几天了:(.我希望我的车轮能同时转动和转向:/)
我很抱歉我的英语不好
谢谢!我解决了这个问题:
Tires[0].transform.Rotate(Vector3.right,-BLWheel.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg,Space.Self);
Tires[1].transform.Rotate(Vector3.right,BRWheel.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg,Space.Self);
Tires[2].transform.Rotate(Vector3.right, FLWheel.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg,Space.Self);
Tires[3].transform.Rotate(Vector3.right, -FRWheel.rpm * 2 * Mathf.PI / 60.0f * Time.deltaTime * Mathf.Rad2Deg,Space.Self);
Tires[2].transform.Rotate(Vector3.up, FLWheel.steerAngle - tempAngle,Space.World);
Tires[3].transform.Rotate(Vector3.up, FLWheel.steerAngle - tempAngle,Space.World);
tempAngle = FLWheel.steerAngle;