我正在使用cocos2dx和box2d制作2D平台游戏。
而我现在正在制造一名与敌人进行攻击的玩家。
敌人的攻击如剑或俱乐部,所以当玩家与敌人的剑(或俱乐部)的边缘接触时,我想要碰撞。
到目前为止,我使用box2d制作了一个与子弹相撞的玩家,但我不知道如何将边界框设置为敌人的剑(或俱乐部)边缘,如下图所示。
答案 0 :(得分:0)
我相信你想要的不是一个边界框,而是一个身体,固定装置和形状的集合,以便对敌人和玩家相互作用进行逼真的模拟。
要做到这一点,你需要将粉红色衬里形状(敌人及其武器)划分为一组凸多边形 - 就像你需要为玩家做的那样。
注意,从数学上讲,任何凹形都可以表示为凸多边形的组合。来自Wikipedia's entry for Concave polygon:
始终可以将凹多边形划分为一组凸多边形。
如果您需要处理的实体数量足够少,我只需手动进行分区。
首先,看起来你需要手动分区,只是为了将理想上不可变的部分相互分开。像狼牙棒(或棍棒),前臂,上臂等部件,其中金属,木头或骨骼等结构使得部件足够坚硬,可以实现您想要实现的模拟细节。
然后,您需要再次对这些刚性部件进行分区,以匹配所需模拟的细节级别。因此,狼牙棒的头部可能使用接近五边形多边形的东西来表示。钉锤的轴,只是一个矩形的多边形。将这两个凸形形状连接到单个体上以用于钉锤。等等。
如果您愿意,可以使用算法(或使用这些算法的实现)来计算构成凹部的凸多边形集。除非你打算为任意形状做这件事,否则我不确定它是否值得。