我在游戏中使用Box2d
作为引擎。有一部分会发生非物理行为,即传送。
我开发了一种非常简单的传送方法,但它没有考虑到球在任何一点都可以与两个传送器中的任何一个发生碰撞的事实。而且这两个传送器在y
轴上上下移动。
有谁知道我可以使用的公式?
if (ball.getBody().getPosition().x > 0){
ball.getBody().setTransform(
new Vec2(
getTarget().getBodyPosition().x - 1.5f,
getTarget().getBodyPosition().y),
0.0f);
ball.getBody().setLinearVelocity(ball.getLinearVelocity());
}else if (ball.getBody().getPosition().x < 0){
ball.getBody().setTransform(
new Vec2(
getTarget().getBodyPosition().x + 1.5f,
getTarget().getBodyPosition().y),
0.0f);
ball.getBody().setLinearVelocity(ball.getLinearVelocity());
}
理想情况下,如果球与其中一个传送器发生碰撞,它会被转换到另一侧的另一个传送器。所以球将继续在完全相同的路径上。
一旦球与其中一个传送器的边缘发生碰撞,就会发生传送。
球是dynamic
身体,两个传送器都是kinematic
。
预期行为..