添加新的跳跃 action!
实现跳跃功能,首先我们去 Input Actions的配置表里面添加一个新的按键绑定!
Action Type 绑定为Button [Button
: 表示一个二进制按钮,只有两个状态:按下和未按下]
下面的代码是当触发控制器 GamePlaying 场景下!触发 Jump 按键的时候! started 表示摁下!绑定使用 +=Func
可以看到控制台,有输出JUMPING!代表触发了输入器的JUMP
并且执行了我们绑定了JUMP
回调函数!
Rigidbody2D.AddForce
然后我们使用Rigidbody2D.AddForce文档方法,给刚体在y轴上添加一个力,让他沿着y轴跳起来!
首先设置一个方便在可视化界面调整的 力道属性 Thrust
然后通过 Rigidbody2D.AddForce 给刚体加一个 沿着 y轴方向的推力!第二个参数代表这个力的方式 是一瞬间的力!具体去看上面的文档!
void Jump(InputAction.CallbackContext ctx)
{
Debug.Log("Player is JUMPING");
rigidbody.AddForce(transform.up*thrust,ForceMode2D.Impulse);
}
这样就可以跳了!
跳的不是很有弹性!落地比较慢!可以尝试修改重力倍数!让跳跃比较适合游戏场景!
这种效果就相对好一点!!
遇到跳不起来的的小坑
虽然场景中的重力加速度为 -9.8 沿着y轴向下!rigidbody 本身的速度是根据自身情况变换的!
如果刚体在下落,那么刚体本身的速度是根据重力加速度持续增加的!
如果落到地面上不动的话!那么刚体沿着y轴的速度就是0
所以刚体本身沿着y轴的速度要设置为他本身默认的速度!就好了
刚体本身的 y 轴 设置为 -9.8f 的话相当于一直有一个向下9.8的速度!
你给的力的需要让物体能加速到超过 9.8,这个人物才能抵消这个速度跳跃起来!
这就是为什么之前写的逻辑一直跳不起来的原因!
评论区