【发布时间】:2018-01-21 08:31:37
【问题描述】:
我正在使用 cocos2dx 和 box2d 制作一个 2D 平台游戏。
我现在正在制作一个玩家与敌人的攻击相撞。
敌人的攻击是剑或棍棒,所以我想在玩家接触到敌人的剑(或棍棒)的边缘时进行碰撞。
到目前为止,我使用box2d制作了一个玩家与子弹的碰撞,但我不知道如何将边界框制作成如下图所示的敌人剑(或棍棒)的边缘。
【问题讨论】:
我正在使用 cocos2dx 和 box2d 制作一个 2D 平台游戏。
我现在正在制作一个玩家与敌人的攻击相撞。
敌人的攻击是剑或棍棒,所以我想在玩家接触到敌人的剑(或棍棒)的边缘时进行碰撞。
到目前为止,我使用box2d制作了一个玩家与子弹的碰撞,但我不知道如何将边界框制作成如下图所示的敌人剑(或棍棒)的边缘。
【问题讨论】:
我相信您想要的不是边界框,而是身体、固定装置和形状的集合,以对敌人和玩家之间的交互进行足够逼真的模拟。
为此,您需要将粉红色的线条形状(敌人及其武器)划分为一组凸多边形——就像您需要为玩家做的那样。
请注意,从数学上讲,任何凹形都可以表示为凸多边形的组合。来自Wikipedia's entry for Concave polygon:
总是可以将一个凹多边形分割成一组凸多边形。
如果您需要处理的实体数量足够少,我只需手动进行分区。
一方面,您似乎无论如何都需要手动对事物进行分区,以便将理想情况下不可变的部分彼此分开。狼牙棒(或球杆)、前臂、上臂等部件,其中金属、木材或骨头等结构使部件足够坚硬,可以实现您想要实现的模拟细节。
然后,您需要再次对这些刚性部件进行分区,以匹配您想要的模拟的详细程度。因此,狼牙棒的头部可以用接近五边形的多边形来表示。狼牙棒的轴,由一个矩形多边形组成。将这两个凸形连接到权杖的单个主体上。以此类推。
如果您愿意,您可以使用算法(或使用这些算法的实现)来计算构成凹面部分的凸多边形集。但是,除非您要对任意形状执行此操作,否则我不确定它是否值得。
【讨论】: