Vector libgdx-在圆形路径中移动实体

Vector libgdx-在圆形路径中移动实体,vector,libgdx,box2d,Vector,Libgdx,Box2d,我试着绕着另一个物体做圆周运动。从现在起,我在两个身体之间有一个距离关节,但我的问题是如何找到施加力的正确方向 我尝试了这个显然不起作用的功能: public void updateCircular(浮动速度,矢量2中心){ Vector2 radius=center.sub(this.body.getPosition()); 矢量2力=半径。旋转90(1)。nor()。scl(速度); 此.body.setLinearVelocity(力x,力y); } center是我静态身体的锚定点,该

我试着绕着另一个物体做圆周运动。从现在起,我在两个身体之间有一个
距离关节
,但我的问题是如何找到施加力的正确方向

我尝试了这个显然不起作用的功能:

public void updateCircular(浮动速度,矢量2中心){
Vector2 radius=center.sub(this.body.getPosition());
矢量2力=半径。旋转90(1)。nor()。scl(速度);
此.body.setLinearVelocity(力x,力y);
}
center
是我静态身体的锚定点,该函数由我移动身体的类调用,实际上是在渲染部分调用此方法,所以每次我都会将两个身体之间的距离向量旋转90度以找到切线向量


这似乎是个坏主意,因此如何在每一帧中找到切线向量,以便在第二帧周围移动第一个对象?

向量2中心每一帧都在修改,您需要制作一个副本

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);
}

但是如果我想要一个始终与距离向量相切的力,我不应该让它每帧更新一次吗?90度角应该可以,我测试了这个,物体在一个圆中移动。不过我没有添加距离关节。它应该会更新每一帧,因为距离向量会发生变化。该向量表示圆路径的半径。这个向量的90度角与端点处的圆相切。我同意,那么为什么我需要一个副本?Center.sub永远从Center减去该值,所以要从Center的副本中减去位置