簡體   English   中英

AndEngine-獲取子畫面的中心坐標

[英]AndEngine - Getting Center Coordinates of a Sprite

我的游戲中有一個精靈,我想獲取它的中心坐標。 盡管可以旋轉精靈,所以我不能只獲得它的x / y坐標,然后加上精靈的寬度/高度的一半,因為getWidth和getHeight方法返回原始的未旋轉精靈的尺寸。

我試過了getSceneCenterCoordinates(),但是由於某種原因,即使所有小精靈彼此之間都不遠,它們也會返回相同的坐標。

這是一張描述我想要的圖形,紅點是我想要的坐標,右側圖上的寬度/高度標簽表示我想要getWidth / Height方法返回的內容(但他們沒有): 在此處輸入圖片說明

您可以使用坐標轉換器

final float[] spriteCoordinates = sprite.convertLocalToSceneCoordinates(x,y);
        final float canonX = spriteCoordinates[VERTEX_INDEX_X];
        final float canonY = spriteCoordinates[VERTEX_INDEX_Y];
Sprite sprite_in_fixedpoint_of_the_first_sprite=new Sprite(canonX,canonY,textureregion)

獲取所有角的最小值和最大值(對於-x和y分量)。 然后取最大和最小值的平均值為中間值:

middleX = (maxX + minX) / 2

對y分量重復相同的步驟。

考慮這樣的事情

    Rectangle test = new Rectangle(100, 100, 50, 100, vboManager);
    mainScene.attachChild(test);

    System.out.println("Before RotCtrX = " + test.getRotationCenterX());
    System.out.println("Before RotCtrY = " + test.getRotationCenterY());

    test.setRotation(45);
    System.out.println("After RotCtrX = " + test.getRotationCenterX());
    System.out.println("After RotCtrY = " + test.getRotationCenterY());

結果是

System.out(4526): Before RotCtrX = 25.0
System.out(4526): Before RotCtrY = 50.0
System.out(4526): After RotCtrX = 25.0
System.out(4526): After RotCtrY = 50.0

AndEngine實體圍繞中心旋轉(除非更改RotationCenter值),因此應用setRotate()不會影響“中心”點的位置

這些“中心”點是相對於實體的,因此,如果您需要實際的屏幕坐標,則需要將其添加到getX()和getY()值中-BTW也不會僅基於應用setRotate而改變()

我弄清楚了如何正確使用getSceneCenterCoordinates(),這是將其交給float []。 這是我的解決方案:

float[] objCenterPos = new float[2];
obj.sprite.getSceneCenterCoordinates(objCenterPos);
Log.d(this.toString(),  "Coordinates: ("+objCenterPos[0]+","+objCenterPos[1]+")");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM