получить неправильные координаты дочернего спрайта - PullRequest
0 голосов
/ 11 ноября 2011

Прежде всего, спасибо Николаю за его великолепный двигатель.

То, что я делаю, это ... 1) Я создал спрайт, пусть call является родительским спрайтом 2) Я создал другой спрайт, давайте назовем его дочерним спрайтом 3) Я установил дочернее размещение с помощью convertLocalToSceneCoordinates 4) Iповернул этот дочерний спрайт до -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.

ссылка на форум

1 Ответ

3 голосов
/ 19 ноября 2011

Позвольте мне подтвердить мое понимание здесь. Я интерпретирую ваш вопрос как mBossEarth и mRocketPod как 2 разных спрайта, и связь между ними заключается в том, что mRocketPod является дочерним спрайтом в mBossEarth, как я вижу из mBossEarth.attachChild (mRocketPod).

Я думаю, что ошибочное утверждение таково:

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

1) Если у вас есть координаты сцены, к которым предполагается присоединить mRocketPod, но вы хотите установить ее как дочерний элемент mBossEarth, вы должны получить локальные координаты mBossEarth , и затем установите mRocketPod в это положение, прежде чем присоединять его к mBossEarth. Что вы сделали, так это конвертировали (119, 10) вашего спрайта mRocketPod в координаты сцены, и когда вы по ошибке примените координаты этой сцены к 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);
...