炸弹 - Cocos2d/Box2d

Posted

技术标签:

【中文标题】炸弹 - Cocos2d/Box2d【英文标题】:Bombs - Cocos2d/Box2d 【发布时间】:2011-07-29 23:58:53 【问题描述】:

我有一个球和一个炸弹。我需要做的就是,当球与炸弹相撞时,炸弹会爆炸,将球推向与投掷球相反的方向远离炸弹。

例如,如果球以 45 度角抛出并击中炸弹,则炸弹爆炸并将球以 -45 度角推离炸弹。

这可能吗?如果是这样,有人能引导我走向正确的方向吗?

【问题讨论】:

【参考方案1】:

这是可能的。实现您自己的 b2ContactListener 以查找炸弹-球碰撞。然后根据球和炸弹的位置对球施加线性脉冲。

【讨论】:

我有一个 b2ContactListener 但我找不到任何线性脉冲 有一个b2Body的ApplyLinearImpulse方法【参考方案2】:

如果您想完全放弃物理模拟(这几乎是您编写的内容),那么您可以不使用 Box2D,也可以仅将其用于碰撞检测。

要仅将它用于碰撞检测,您只需将您的身体设置为传感器,当检测到碰撞时,您以您想要的角度发送它(减去或添加角度,当满足范围的最大值时滚动)。

如果您想使用物理模拟(对我来说更有意义),那么只需将它们都设置为正确的遮罩以相互碰撞,并根据需要设置您的恢复(弹性)。听起来你可能希望你的球是一个动态的物体,而你的炸弹是一个静态的(我想他们就是这么称呼它的)。

显然,无论哪种情况,您都需要设置任何动画或粒子发射器以在碰撞时触发。

【讨论】:

我仍然想在我的应用程序中使用 Box2D。我要说的是,当球与炸弹相撞时,炸弹就会被摧毁,而无论玩家以哪个角度将球“弹”在炸弹上,球都会向相反的方向移动。例如。球以 45 度角朝炸弹“轻弹”,炸弹爆炸,迫使球以 -45 度角(基本上,如果他们将球向右轻弹到炸弹并且球击中炸弹,那么炸弹就会强制它在左边) 好吧,如果您想要完整的物理模拟,那么您无需担心 45 度角(或任何角度)。只需使炸弹具有非常大的质量或将其设置为静态对象即可。实际上,这甚至不是必需的,但您可能需要调整这些东西以获得您想要的碰撞反应。完成碰撞后,您只需移除炸弹体,球就会自行弹回正确的方向。【参考方案3】:

当球和炸弹碰撞时,你可以尝试在很短的时间内扩大炸弹的大小,而不是对球施加线性冲量。放大炸弹的尺寸后,您可以摧毁炸弹体。

扩大的弹体会将球推向正确的方向。

【讨论】:

以上是关于炸弹 - Cocos2d/Box2d的主要内容,如果未能解决你的问题,请参考以下文章

引爆炸弹(dfs解法)

深入了解cocos2d-x 3.x定时器(scheduler)的使用和原理探究

蓝桥杯模拟赛-引爆炸弹-DFS+并查集

[LOJ#2255][BZOJ5017][Snoi2017]炸弹

bzoj5017: [Snoi2017]炸弹

炸弹人