2011-11-11 30 views
0

首先讚歎尼古拉斯的偉大引擎。得到錯誤的孩子精靈座標

我一個做的是什麼... 1)我創建了一個精靈,讓調用父精靈 2)我創造了另一個精靈,讓我們把它的孩子精靈 3)我將孩子並主張用convertLocalToSceneCoordinates 4 )我將這個子精靈旋轉到-90度 5)我將這個精靈添加到父精靈,並最終將父精靈添加到場景中

現在它看起來很好,並且隨父母一起移動,但是當我嘗試添加另一個精靈時小孩精靈的位置給了我錯誤的座標。即X和Y.

請告訴我如何解決?

代碼:

mRocketPod = new RocketPod(0, 0, this.mTRRocketPod); 
float points[] = mRocketPod.convertLocalToSceneCoordinates(119, 10); 
mRocketPod.setPosition(points[0], points[1]); 
mRocketPod.setRotation(-90); 
mBossEarth.attachChild(mRocketPod); 

它會給我mRocketPod錯誤的座標。

link to forum

+1

我很困惑你的問題。您是否按照上述步驟1-5將子Sprite成功添加到了您的父Sprite中,並且mRocketPod是唯一錯誤的子Sprite?你是什​​麼意思給你錯誤的座標?你的意思是mRocketPod沒有顯示在正確的位置? – yjw

+0

是的,我的意思是它不會在寫入位置添加。如果我使它成爲某個精靈的子節點,它會在父節點的特定位置添加我的子精靈,但是我希望我的子精靈可以添加到父節點上的某個特定位置。 –

+0

pelase查看此錯誤以供參考http://www.andengine.org/forums/bugs/coordinate-conversion-t5699.html –

回答

3

讓我確認我的理解這裏。我將你的問題解釋爲mBossEarth和mRocketPod作爲2個不同的精靈,並且2之間的關係是mRocketPod是mBossEarth下的子精靈,就像我從mBossEarth.attachChild(mRocketPod)中看到的那樣。

我認爲錯誤的說法是這樣的:

float points[] = mRocketPod.convertLocalToSceneCoordinates(119, 10); 

1)如果您有現場座標,其mRocketPod應該連接到,但你想建立它作爲mBossEarth,你的孩子應該獲取mBossEarth的局部座標,然後將mRocketPod設置爲該位置,然後將其附加到mBossEarth。你所做的就是將你的精靈mRocketPod(119,10)轉換成場景座標,當你錯誤地將這個場景座標應用到setPosition並附加到父對象上時,你會在你想要的位置開始揮手。正確的代碼應該是這樣的:

mRocketPod = new RocketPod(0, 0, this.mTRRocketPod); 
    float points[] = mBossEarth.convertSceneToLocalCoordinates(119, 10); 
    mRocketPod.setPosition(points[0], points[1]); 
    mRocketPod.setRotation(-90); 
    mBossEarth.attachChild(mRocketPod); 

在提出的解決方案,我在做什麼是轉換的場景座標你必須進入內mBossEarth的座標系。這樣,當你附加孩子時,它將被設置爲mBossEarth中的位置。 2)在不太可能發生的情況下,您實際上擁有mBossEarth中的座標,您希望將mRocketPod放置在(119,10)位置,實際上可以直接在構造函數中將其設置,而無需執行任何座標轉換。正確的代碼可能是這樣的:

mRocketPod = new RocketPod(119, 10, this.mTRRocketPod); 
mRocketPod.setRotation(-90); 
mBossEarth.attachChild(mRocketPod);