设置场景: • 我们的环境:LibGdx Android & iOS //如果你不知道LibGdx,没关系,只要知道这个程序是为iOS和Android构建的
• 我们的屏幕上什么也没有,只有一个 Box2d 圆
好的,那我需要做什么呢? 我需要让我的 Box2d Circle “传送”到屏幕被点击的位置...但我需要它有一定的速度,这样如果它与其他物体发生碰撞,它就会把另一个物体扔到一边。
我目前正在使用 body.setTransform() 但我没有速度,人们说它有很多问题。
我该怎么做?谢谢!
setTransform方法本身没有问题。 由于忽略物理原理,可能会导致一些麻烦,这些问题可能会在以下情况出现:
setTransform 时的典型情况,我认为没有理由害怕它。您在这里也不需要任何速度。
Vector2 velocity = target.sub( body.getPosition() ) ); //where target is Vector2 of touched point
如果需要的话(这是可选的)
//optional
velocity.nor();
velocity.mul( MAX_VALUE ); //MAX_VALUE is a float
body.setLinearVelocity( velocity );
if( body.getPosition().sub( target ).len() < SOME_PRECISION )
{
body.setLinearVelocity( new Vector2(0, 0) );
}
MouseJoint 虽然我从来没有使用过这个并且不能在这里提供任何提示。
setTransform() 代码放入 LibGDX Gdx.app.postRunnable() 方法中:
Gdx.app.postRunnable {
body.setTransform(10f, 10f, 0f)
}