字符控制问题 "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);
}
什么都没发生。
角色不能左右移动但不能跳跃
开始的一些项目:
- 确保 onGround 为真。 => 在 if 之前添加一个
Debug.Log($"is on ground {onGround}")
并检查它。
- 确保代码在 Update() 循环中(您也可以在 FixedUpdate 中设置它,但更新更好)
然后我看到一个逻辑问题。这就是您的代码中发生的情况:
- 你在地面上
- 你增加速度并向上移动
- 你已经不在地面上了
- 如果失败所以垂直速度停止因为你不再在地面上
- 玩家后退
要解决此问题,请替换此行:
rb.velocity = new Vector2(rb.velocity.x, jumppower);
有了这个:
rb.AddForce(new Vector2(0, jumppower), ForceMode2D.Impulse);
我正在练习创建 2D 游戏并编写了 C# 脚本代码,但我的角色无法跳跃。
我尝试用 "UpArrow" 替换 "Space" 也没有用。
if (Input.GetKey(KeyCode.UpArrow) && onGround)
{
rb.velocity = new Vector2(rb.velocity.x, jumppower);
}
什么都没发生。 角色不能左右移动但不能跳跃
开始的一些项目:
- 确保 onGround 为真。 => 在 if 之前添加一个
Debug.Log($"is on ground {onGround}")
并检查它。 - 确保代码在 Update() 循环中(您也可以在 FixedUpdate 中设置它,但更新更好)
然后我看到一个逻辑问题。这就是您的代码中发生的情况:
- 你在地面上
- 你增加速度并向上移动
- 你已经不在地面上了
- 如果失败所以垂直速度停止因为你不再在地面上
- 玩家后退
要解决此问题,请替换此行:
rb.velocity = new Vector2(rb.velocity.x, jumppower);
有了这个:
rb.AddForce(new Vector2(0, jumppower), ForceMode2D.Impulse);