Box2D物理引擎模拟炸弹爆炸效果

本文介绍了如何使用Box2D物理引擎在JavaScript中模拟炸弹爆炸效果,包括炸弹效果的原理、构建物理世界以及引爆炸弹的实现步骤。通过射线投射检测周围刚体并施加力,模拟爆炸冲击。详细讲解了关键的代码实现和数学知识应用。
摘要由CSDN通过智能技术生成

今天咱们来模拟炸弹效果。于是问题一来了:“为什么要模仿这么暴力的效果呢?莫非几日不见,Yorhom人品煞变?”

其实玩过愤怒的小鸟的同学都应该对这种效果似曾相识,因为据非官方报道,第二厉害的小鸟——黑色鸟的特技就是自爆。问题二出现了:“那第一厉害的小鸟是哪一种呢?”据Yorhom我本人测试,那只红色大鸟应该是最厉害的,不过貌似没有特技?愤怒的小鸟这种肤浅的游戏,Y某我最擅长了,以后有时间会专门写写这个游戏的攻略。这两种鸟的靓照如下:


敷衍了问问题二的同学,问题三就来了:“到底如何实现这个效果呢?” 这个问题不好敷衍,于是接下来的文章,就由我向大家介绍如何使用Box2D实现这种效果。

在学习本章前,你需要先了解一下Box2D这款很实用,很出名的物理引擎。凭借我个人的学习经验,我向大家推荐拉登大叔的博客,其博客Box2D栏目地址如下:

http://www.ladeng6666.com/blog/category/box2d/


一,炸弹效果原理

在实现这个效果的时候,我想到了两种方案。

方案一:在炸弹刚体爆炸时,由炸弹刚体为起点,向四周喷散小刚体,这些小刚体会被喷射到附近的刚体上,对附近的刚体施加力,然后力是物体运动状态改变的原因(摘自高中物理必修一),然后爆炸效果就可以完成了。这个方法比较简单,但是我觉得有点dirty way。像我这种耳机标有R的必须带右边,标有L的必须带左边的人,怎么可能就此满足了呢?当然,感兴趣的朋友可以自己尝试一下这种方法~

方案二:首先想办法把炸弹刚体周围的其他刚体找到,然后对它们施加一个力,我们只用控制好力的方向就可以实现爆炸效果了。嗯~不错。似乎这种方法更漂亮~

这两种方案显而易见的区别就是方案二比方案一字数要少一点。这意味着什么呢?我想,大家都应该做过至少6年的数学题了吧,据我大约9.5年来总结的经验,题目字数越少的数学题就越难,因为提供的信息量少。所以说,虽然方案二效果相对更好,但是实现起来可能要复杂很多。

方案二之所以比较难以实现,是在于我们不知道如何查找周围的刚体。为此,我将我所了解到的Box2D中的功能都涉猎了一遍,发现我从来没有用过只是听说过的一个功能——射线投射可能会派上用场。不过辛好网上相关的资料挺多的,所以我就此学习了一下b2RayCastInput,b2RayCastOutput这两个类。

上述的两个类很重要,所以大家必须先了解这两个类,具体的教程为:http://ohcoder.com/blog/2012/12/10/ray-casting/,教程中用的是Box2D C++,不过无论是C++版还是Web版,用法都是一样的。

b2RayCastInput,b2RayCastOutput这两个类到底有什么用的?从上面提供的教程可以看出,这两个类的实例一般作为参数传入b2Fixture的RayCast函数中,

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值