字符控制中的问题“字符无法跳跃”

时间:2019-05-14 14:15:18

标签: c# unity3d 2d-games gamecontroller

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

我尝试用也不起作用的“ UpArrow”替换“ Space”。

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

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

1 个答案:

答案 0 :(得分:0)

一些开头的东西:

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

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

  • 你在地面上
  • 您增加速度并向上移动
  • 你不再在地面
  • if失败,因此垂直速度停止,因为您不再在地面上
  • 玩家后退

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

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

与此:

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