【问题标题】:Character not moving in horizontal axis字符不在水平轴上移动
【发布时间】:2020-08-19 04:34:24
【问题描述】:

我正在用Visual Studio CodeUnity 编写一个2D 平台游戏。到目前为止,我已经确定了稍后将在主角和敌人中使用的动画。对于主角,我已经定义了“水平移动”和“垂直移动”。但是,当我运行游戏时,角色会向上移动,但不会向左或向右移动。

这是我为主角准备的代码:

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);       
  }

}

谁能告诉我我错过了什么?

【问题讨论】:

  • 您的意思是使用CrossPlatformInputManager 而不是Input.GetAxisRaw("Horizontal")?因为写Input.GetAxisRaw("Horizontal")而不是Input.GetKeyDown(KeyCode.D)没有什么意义

标签: c# unity3d game-physics


【解决方案1】:

如果您将代码更改为以下内容,它应该可以工作:

    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 时向对象添加相对力而不是仅仅改变对象的变换位置是有意义的。这应该可以。

【讨论】:

  • 您好,我对初始代码做了一些调整。我仍在使用 Input.GetAxis("Horizo​​ntal") 因为后来我需要在 X 轴上旋转对象。我尝试将一些建议的代码用于“跳转”,但它似乎不起作用。带有新公共浮点“跳转”的代码结束时看起来像这样 if (Input.GetKeyDown(KeyCode.W)) { rb.AddForce(new Vector2(rb.velocity.x, jump)); } }
  • @MauricioVázquez 我的回答定义了水平移动,而不是跳跃,因为您说您的游戏对象无法“向左或向右移动”。如果玩家按下空格时还需要跳跃,请使用rb.AddRelativeForce(Vector2.up* (vel*Time.deltaTime));
【解决方案2】:

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

【讨论】:

  • 这应该是评论,而不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
相关资源
最近更新 更多