How to create an extensible rope in Box2D?
Posted
by
Thomas
on Game Development
See other posts from Game Development
or by Thomas
Published on 2012-10-16T21:40:22Z
Indexed on
2012/10/17
5:27 UTC
Read the original article
Hit count: 321
box2d
Let's say I'm trying to create a ninja lowering himself down a rope, or pulling himself back up, all whilst he might be swinging from side to side or hit by objects. Basically like http://ninja.frozenfractal.com/ but with Box2D instead of hacky JavaScript.
Ideally I would like to use a rope joint in Box2D that allows me to change the length after construction. The standard Box2D RopeJoint
doesn't offer that functionality.
I've considered a PulleyJoint
, connecting the other end of the "pulley" to an invisible kinematic body that I can control to change the length, but PulleyJoint
is more like a rod than a rope: it constrains maximum length, but unlike RopeJoint
it constrains the minimum as well.
Re-creating a RopeJoint
every frame using a new length is rather inefficient, and I'm not even sure it would work properly in the simulation.
I could create a "chain" of bodies connected by RotationJoint
s but that is also less efficient, and less robust. I also wouldn't be able to change the length arbitrarily, but only by adding and removing a whole number of links, and it's not obvious how I would connect the remainder without violating existing joints.
This sounds like something that should be straightforward to do. Am I overlooking something?
© Game Development or respective owner