![](/img/trans.png)
[英]AndEngine: Getting a NullPointerException on UpdateThread when adding a Sprite
[英]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.