Box2D实现Super Mario之关键技术分析——mario下蹲通过低矮障碍物

一、问题起源

         变大之后的Mario的b2Body的宽高是16×32,而障碍物允许通过的高度只有16,游戏里的效果是,Mario借助惯性,在下蹲时滑行通过障碍物。(比如world1-2中开头的地方)。


         若只滑倒障碍物宽度的一半,根据玩家的操作有2中情况:

1. 松开“下蹲”键恢复站立姿势时,mario自动向右滑出障碍物范围;


2. 在按着下蹲键的同时,按下“跳跃”键,mario顶破上方石块并卡在障碍物的空里。

 

二、解决方法

        

 1.仔细观察原游戏效果的时候发现,下蹲的时候确实是重建了一个b2Body高度只有原来一半的新刚体。

         销毁b2Body,重建一个高度较小、可以通过障碍物的新刚体,那么mario会在初始碰撞障碍物的时候就停下来,而且由于删除了b2Body,mario不会有任何运动,但可以试试给新建的刚体一个作用力,人为的让它运动。但是这样mario的运动效果可能不连贯。

 

2.b2Body的b2Fixture属性里面有个sensor,它的作用是:使mario可以检查到碰撞但不会发生实际的碰撞效果。可以不用销毁原来的刚体,宽高不变。

         当mario和低矮障碍物开始碰撞之前,将mario设置为sensor,即setSensor(true)。

这时,mario不会和障碍物发生实际碰撞,继续滑行直到停下来。此时根据上面的2种情况分别处理:

上面方法不行。。。。不能碰撞的话,mario会从平台上掉落。


此时根据上面的2种情况分别处理:

         情况1:给它施加一个向右的作用力(applyImpulse),让它滑出障碍物范围。

         情况2:mario使用较小刚体,和障碍物碰撞,顶破砖块。

        

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值