字符控制问题 "Character can't jump"

Problem in character control "Character can't jump"

我正在练习创建 2D 游戏并编写了 C# 脚本代码,但我的角色无法跳跃。

我尝试用 "UpArrow" 替换 "Space" 也没有用。

if (Input.GetKey(KeyCode.UpArrow) && onGround)
 {
 rb.velocity = new Vector2(rb.velocity.x, jumppower);
 }

什么都没发生。 角色不能左右移动但不能跳跃

开始的一些项目:

  1. 确保 onGround 为真。 => 在 if 之前添加一个 Debug.Log($"is on ground {onGround}") 并检查它。
  2. 确保代码在 Update() 循环中(您也可以在 FixedUpdate 中设置它,但更新更好)

然后我看到一个逻辑问题。这就是您的代码中发生的情况:

  • 你在地面上
  • 你增加速度并向上移动
  • 你已经不在地面上了
  • 如果失败所以垂直速度停止因为你不再在地面上
  • 玩家后退

要解决此问题,请替换此行:

rb.velocity = new Vector2(rb.velocity.x, jumppower);

有了这个:

rb.AddForce(new Vector2(0, jumppower), ForceMode2D.Impulse);