同时自动向前,向左,向右移动对象

时间:2016-06-07 19:07:16

标签: c# unity3d

我正在制作一个游戏项目,在这个游戏项目中,我希望自动向前移动一个物体,同时向左或向右移动物体,就像太阳穴运行角色一样,我使用以下简单的脚本移动对象前进:

void Start () {

    }

void Update () {
    transform.Translate(Vector3.forward *Time.deltaTime);
    transform.Translate(Vector3.left * Time.deltaTime, Space.World);

}

我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

到目前为止,您已经走上了正确的轨道,但我认为您希望根据用户输入左右移动?

这是代表左右输入的代码示例,但可能需要针对您的用例进行自定义。

public float movementSpeed = 6f;

void Update ()
{
    transform.Translate(Vector3.forward * Time.deltaTime);
    //Strafe your object Left and right based on user input                       
    transform.Translate(Vector3.right * Time.deltaTime * Input.GetAxis("Horizontal") * movementSpeed);      
}

可用于旋转播放器的方法示例:

为了让你的播放器转动90度,你需要旋转实际的物体。根据您的实际逻辑/游戏玩法,您可以做一些简单的事情:

void Update() {
    transform.Translate(Vector3.forward * Time.deltaTime);
    //Strafe your object Left and right based on user input                       
    transform.Translate(Vector3.right * Time.deltaTime * Input.GetAxis("Horizontal") * movementSpeed);    
    if (Input.GetKeyDown("q")) { 
        this.transform.Rotate(0, -90, 0);
    }
    if (Input.GetKeyDown("e")) { 
        this.transform.Rotate(0, 90, 0);
    }
}

对于加速度计输入:

void Update() {
    transform.Translate(Vector3.forward * Time.deltaTime);
    if (Input.acceleration.x > 0) {
        this.transform.Rotate(0, 90, 0);
    }
    else if (Input.acceleration.x < -0) {
        this.transform.Rotate(0, -90, 0);
    }
}