2017-03-26 51 views
2

在我的LibGdx遊戲中,我有waypoins(ModelInstance),我需要知道它們之間的距離。 我嘗試使用Transform.getTranslation(new Vector3),但它返回模型的翻譯。我沒有找到獲取模型全局位置的方法。如何在libgdx中查找距離beetwen中的兩個對象

回答

0

要獲得的距離之間的兩個向量使用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 reference

跟蹤模型的最好方法是創建一個存儲您的目標位置(的Vector3)和旋轉的包裝(四元數),並在此包裝上設置您的渲染方法的模型位置,這樣的事情:

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

謝謝,看起來不錯,這將真正幫助我。以及如何在全球空間中獲得模型的位置? – Mike

+0

您的ModelWrapper實例.getPosition() – Hllink

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

正是我需要的,謝謝! – ROSA

相關問題