2011-11-11 13 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のように、親スプライトに子スプライトを正常に追加しましたか?mRocketPodだけが間違っている子スプライトですか?あなたに間違った座標を教えてどういう意味ですか? mRocketPodが正しい位置に表示されていないことを意味しますか? – yjw

+0

はい、書き込み位置に追加されていないことを意味します。私がそれをいくつかのスプライトの子にすると、それは親の特定の位置に子スプライトを追加しますが、親の特定の位置に子スプライトを追加したいと思います。 –

+0

pelase参照用にこのバグを参照してください。http://www.andengine.org/forums/bugs/coordinate-conversion-t5699.html –

答えて

3

私はここに私の理解を確認してみましょう。私はあなたの質問をmBossEarthとmRocketPodとして2つの異なるスプライトとして解釈しています.2つの関係は、mBossEarth.attachChild(mRocketPod)から見ることができるように、mRossPodはmBossEarthの子スプライトです。あなたがシーンをお持ちの場合はmRocketPodが接続されることになってされている座標が、あなたはmBossEarthの子としてそれを確立したい、あなた)

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

1:

私は、障害のある文は、このだと思いますのローカル座標がmBossEarthになるようにしてから、mBossEarthにアタッチする前にmRocketPodをその位置に設定する必要があります。あなたはスプライト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内の座標を実際に持っている場合は、mRossPodを(119,10)の位置に配置したい場合は、座標変換を行わずに直接コンストラクタに直接設定できます。正しいコードはおそらく次のとおりです。

mRocketPod = new RocketPod(119, 10, this.mTRRocketPod); 
mRocketPod.setRotation(-90); 
mBossEarth.attachChild(mRocketPod); 
関連する問題