字符不在水平轴上移动

问题描述

我正在用2DVisual Studio Code来开发Unity平台游戏。到目前为止,我已经建立了以后将在主角和敌人中使用的动画。在主角中,我定义了“水平移动”和“垂直移动”。但是,当我运行游戏时,角色会向上移动,但不会向左或向右移动。

这是我为主要角色准备的代码

public class Hero : MonobehavIoUr 
 
 { 
    public float vel =10f;
    public Animator anim;
    private Vector2 moveVeLocity; 
    float horizontalMove = 0f; 

    private Rigidbody2D rb; 

  void Start()
  {
     rb = GetComponent<Rigidbody2D>();
  }

  void Update() 
  {
   horizontalMove = Input.GetAxisRaw("Horizontal") * vel;
   Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"),Input.GetAxisRaw("Vertical"));
   moveVeLocity = moveInput.normalized * vel;
  }

  void FixedUpdate()
  {
    Vector2 v = new Vector2 (vel,0);
    rb.veLocity = v;
    rb.MovePosition(rb.position + moveVeLocity * Time.fixedDeltaTime);       
  }

}

有人可以告诉我我想念什么吗?

解决方法

如果将代码更改为此,它应该起作用:

    void Update() 
      {
       if(Input.GetKeyDown(KeyCode.D))
          {
          rb.AddRelativeForce(Vector2.right * (vel*Time.deltaTime));
          }
           else if(Input.GetKeyDown(KeyCode.A))
              {
              rb.AddRelativeForce(Vector2.left * (vel*Time.deltaTime));
              }
      }

由于您在游戏对象上附加了刚体,因此在用户按下D / A时向对象添加相对力将是有意义的,而不仅仅是更改对象的变换位置。这应该起作用。

,

基本上,您可以在输入管理器的“编辑”>“项目设置”>“输入”下设置水平向上移动。仔细检查水平轴是否设置在左右按钮上。