在我的LibGdx游戏中,我有路径(ModelInstance),我需要知道它们的距离。 我尝试使用 Transform.getTranslation(new Vector3),但它返回模型的翻译。我找不到获取全球模型位置的方法。
答案 0 :(得分:2)
要获得两个向量之间的距离,请使用dst方法:
public float dst(Vector3 vector)
Specified by:
dst in interface Vector<Vector3>
Parameters:
vector - The other vector
Returns:
the distance between this and the other vector
跟踪模型的最佳方法是创建一个包装器,用于存储对象位置(Vector3)和旋转(Quaternion),并在此包装器中设置渲染方法的模型位置,如下所示:
public abstract class ModelWrapper{
private ModelInstance model;
private Vector3 position;
private Quaternion rotation;
public ModelWrapper(ModelInstance model,Vector3 position,Quaternion rotation) {
this.model = model;
this.position = position;
this.rotation = rotation;
}
public ModelInstance getModel() {
return model;
}
public void setModel(ModelInstance model) {
this.model = model;
}
public Vector3 getPosition() {
return position;
}
public void setPosition(Vector3 position) {
this.position = position;
}
public Quaternion getRotation() {
return rotation;
}
public void setRotation(Quaternion rotation) {
this.rotation = rotation;
}
public void render(ModelBatch modelBatch, Environment environment) {
this.model.transform.set(this.position,this.rotation);
modelBatch.render(model, environment);
}
}
答案 1 :(得分:1)
您在2D或3D空间中的游戏? 如果在2D中,那么我们可以简单地使用毕达哥拉斯定理并编写我们自己的方法:
double distance(Vector2 object1, Vector2 object2){
return Math.sqrt(Math.pow((object2.x - object1.x), 2) + Math.pow((object2.y - object1.y), 2));
}