我试图使用C#脚本统一创建汽车,一切似乎都很好,汽车左右旋转,除了1个问题。当我按前进或后退键时,汽车左右移动而不是向前和向后移动,我无法看到我的代码有什么问题,这是我的代码:
using UnityEngine;
using System.Collections;
public class Car : MonoBehaviour {
private Rigidbody carRigid;
public int speed;
public int rotateSpeed;
// Use this for initialization
void Start () {
carRigid = GetComponent<Rigidbody> ();
}
// Update is called once per frame
void Update () {
}
void FixedUpdate(){
if (Input.GetButton("Forward")){
carRigid.AddForce (transform.forward * speed * Time.deltaTime);
}
if (Input.GetButton("Reverse")){
carRigid.AddForce (transform.forward * -speed * Time.deltaTime);
}
if (Input.GetButton("Left")){
transform.Rotate (0, rotateSpeed, 0);
}
if (Input.GetButton("Right")){
transform.Rotate (0, rotateSpeed, 0);
}
}
}
答案 0 :(得分:1)
我刚刚在一个空白的Unity场景中测试了你的代码,我认为你AddForce()
是罪魁祸首!
我用过
if (Input.GetKey(KeyCode.W))
{
transform.position += transform.forward * speed * Time.deltaTime;
}
这似乎工作得很好!
答案 1 :(得分:1)
您的汽车正在另一个轴上移动,该轴与您想要的轴不同。尝试transform.right / transform.left或transform.up / transform.down。
答案 2 :(得分:0)
也许是因为你导入了一个3D模型,它本地向前是不正确的。
你有一些选择: 1)将其修复到3d建模程序中再次导出它。
2)创建一个空的GameObject并将其设为您汽车的父级。将刚体和相关代码分配给此GameObject并在其局部空间中旋转汽车模型,直到它被修复(我猜是90度)。
3)根据模型的旋转使用transform.right或transform.left。
我个人更喜欢第一选择。