用于移动3D对象的Unity脚本并未完全按计划进行

时间:2018-01-04 02:31:13

标签: c# unity3d

我是Unity和Stack Overflow的新手,并且正在寻找一个可以创建对象(如播放器)的脚本。我找到了一个有效的脚本,有点工作或者去计划。当我测试脚本时,当我向前按箭头键,而不是前进时,它将开始跳跃。如果我按下向下箭头键,立方体(或玩家)将尝试将自己推到地下,然后将永远掉落,但左右箭头键完全正常。请注意,此脚本目前仅用于移动播放器,而不是其他任何内容,以防您认为它应该是其他的或不同的。这是代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour {


    public float moveSpeed;

    // Use this for initialization
    void Start()
    {
        moveSpeed = 5f;
    }

    // Update is called once per frame
    void Update()
    {

        transform.Translate(moveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime, moveSpeed * Input.GetAxis("Vertical") * Time.deltaTime, 0f);
    }
}

我希望您找到解决方案或找到解释。谢谢你的回复。 问候,         用户:9104031

2 个答案:

答案 0 :(得分:2)

Unity使用坐标系,其中Y为向上,Z为向前。

在您的代码中,您正在根据您的"垂直"移动播放器。 Y轴上的轴输入,当然会将您的向上/向下箭头键映射到错误的方向。

你所要做的就是改变

transform.Translate(
    moveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime
    , moveSpeed * Input.GetAxis("Vertical") * Time.deltaTime
    , 0f);

transform.Translate(
    moveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime
    , 0f
    , moveSpeed * Input.GetAxis("Vertical") * Time.deltaTime);

答案 1 :(得分:0)

如果我理解正确,我相信这是您在更新部分中想要的内容:

transform.Translate(moveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime, 0f, moveSpeed * Input.GetAxis("Vertical") * Time.deltaTime);

我换了Y轴和Z轴。希望你的目标是什么!