我所拥有的是一个圆圈,它滚过其他物体并“挑选”它们。我当前的设置使用WeldJoint连接并将拾取的对象放置在圆的边缘。然后我编辑这些对象的灯具,成为一个传感器,以避免碰撞响应。使用applyForceToCenter()推动圆圈并稍微推动它。一切正常。
问题是来自新体的累积质量限制了主圆的运动。我的游戏过于逼真了。尸体一直在拉动周围的圆圈。我想将任何影响圆圈的基于物理的属性归零。
我尝试过使用resetMassData(),MassData.mass = 0,setAwake(false),setActive(false)......等各种方法。
感谢任何帮助,谢谢。
编辑:我已经考虑使用数学函数来旋转圆周围的对象,例如: Make a sprite go in a circle。我不太确定这是否是手持box2d的路线。
答案 0 :(得分:2)
当您使用焊接接头时,在将它们附加到圆上时,不会删除任何物体(具有自身质量)。因为您满足于简单地假设一旦某些东西粘在圆圈上而不再需要与任何东西碰撞,一个好的解决方案就是将它们作为传感器添加到您的圆体中。这将要求您删除正文并将夹具添加到您的圆圈。
我认为让更多的物体为你的圈子带来更多的质量会很酷。为什么不制定一个例程来确定当前卡在球上的总额外质量,并相应地调整球的推力?你最终会得到相同的加速度,但你会获得免费产生的碰撞力的实际增加。不仅如此,您的焊接传感器还将有效地改变惯性,因此您的球的重心现在将反映出物体被卡在其上的方式!这是免费的现实主义,所以我试着利用它。此外,它比编写代码更容易正确移动灯具。
您还可以通过某种因素降低新“卡住”对象的密度,以便在必要时降低效果。