我正在尝试围绕另一个身体进行圆周运动。从现在开始,我在两个身体之间有一个DistanceJoint
,但我的问题是如何找到正确的方向来施加我的力量。
我试过这个功能,这显然不起作用:
public void updateCircular(float speed, Vector2 center){
Vector2 radius = center.sub(this.body.getPosition());
Vector2 force = radius.rotate90(1).nor().scl(speed);
this.body.setLinearVelocity(force.x, force.y);
}
center
是我的静态体的锚点,函数由我的移动体的类调用,实际上我的想法是在渲染部分调用这个方法,所以每次我旋转向量的两个体之间的距离为90度,找到切线向量。
这似乎是一个坏主意,那么如何才能在每一帧中找到切线向量,以便将第一个对象移动到第二个对象周围?
答案 0 :(得分:1)
每帧都在修改Vector2中心,你需要复制。
public void updateCircular(float speed, Vector2 center){
Vector2 radius = center.cpy().sub(this.body.getPosition());
Vector2 force = radius.rotate90(1).nor().scl(speed);
this.body.setLinearVelocity(force.x, force.y);
}