我的车辆代码出了什么问题?

时间:2016-03-25 16:07:45

标签: c# unity3d

我试图使用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);
        }
    }
}

3 个答案:

答案 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。

我个人更喜欢第一选择。