首页 > 其他 > 详细

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

时间:2014-03-16 10:29:00      阅读:559      评论:0      收藏:0      [点我收藏+]

一、问题起源

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

bubuko.com,布布扣

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣 bubuko.com,布布扣

二、解决方法

        

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

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

 

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

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

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

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

         情况2:setSensor(false),这样mario就会和障碍物碰撞,顶破砖块。

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

        

Box2D实现Super Mario之关键技术分析——mario下蹲通过低矮障碍物,布布扣,bubuko.com

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

原文:http://blog.csdn.net/xuzhaojia/article/details/21302913

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!