目 录CONTENT

文章目录

09.《勇士传说》使用Rigidbody2D.AddForce实现人物跳跃

Hello!你好!我是村望~!
2023-04-14 / 0 评论 / 0 点赞 / 342 阅读 / 569 字
温馨提示:
我不想探寻任何东西的意义,我只享受当下思考的快乐~

添加新的跳跃 action!

实现跳跃功能,首先我们去 Input Actions的配置表里面添加一个新的按键绑定!

image-20230414103459610

Action Type 绑定为Button [Button: 表示一个二进制按钮,只有两个状态:按下和未按下]

下面的代码是当触发控制器 GamePlaying 场景下!触发 Jump 按键的时候! started 表示摁下!绑定使用 +=Func

image-20230414103705978

Apr-14-2023 10-46-12

可以看到控制台,有输出JUMPING!代表触发了输入器的JUMP并且执行了我们绑定了JUMP回调函数!

Rigidbody2D.AddForce

然后我们使用Rigidbody2D.AddForce文档方法,给刚体在y轴上添加一个力,让他沿着y轴跳起来!

首先设置一个方便在可视化界面调整的 力道属性 Thrust

image-20230414125011777

然后通过 Rigidbody2D.AddForce 给刚体加一个 沿着 y轴方向的推力!第二个参数代表这个力的方式 是一瞬间的力!具体去看上面的文档!

void Jump(InputAction.CallbackContext ctx)
    {
        Debug.Log("Player is JUMPING");
        rigidbody.AddForce(transform.up*thrust,ForceMode2D.Impulse);
    }

这样就可以跳了!

Apr-14-2023 12-56-14

跳的不是很有弹性!落地比较慢!可以尝试修改重力倍数!让跳跃比较适合游戏场景!

image-20230414125933169

Apr-14-2023 12-59-12这种效果就相对好一点!!

遇到跳不起来的的小坑

image-20230414124302116

虽然场景中的重力加速度为 -9.8 沿着y轴向下!rigidbody 本身的速度是根据自身情况变换的!

如果刚体在下落,那么刚体本身的速度是根据重力加速度持续增加的!

Apr-14-2023 15-04-38如果落到地面上不动的话!那么刚体沿着y轴的速度就是0

所以刚体本身沿着y轴的速度要设置为他本身默认的速度!就好了

刚体本身的 y 轴 设置为 -9.8f 的话相当于一直有一个向下9.8的速度!

你给的力的需要让物体能加速到超过 9.8,这个人物才能抵消这个速度跳跃起来!

这就是为什么之前写的逻辑一直跳不起来的原因!

0

评论区