(Cocos2D) Спрайт не идеально сидит поверх другого спрайта?

Что-то очень странное в моем приложении. Я, должно быть, просматривал эту строку бесчисленное количество раз и, клянусь, не вижу в ней ничего плохого. Практически по нажатию кнопки этот код будет выполняться, и спрайт A должен располагаться поверх спрайта B.

Нет, я не могу просто установить setPosition на место, так как спрайт A будет двигаться вместе со спрайтом B поверх него во время анимации.

Итак, что здесь происходит, так это то, что спрайт A оказывается примерно на 30 пикселей выше верхней части спрайта B. Я не знаю, почему это так. Это мой код для этого:

spriteA.position = ccp(cgpoint.x , spriteB.position.y + spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2);

Итак, что здесь происходит, так это то, что я устанавливаю позицию X спрайта A в CGPoint, которая не относится к этому вопросу, но я устанавливаю свою позицию Y в текущую позицию, в которой находится spriteB, затем я добавляю половину высоты spriteB для учета привязки проблема, затем, наконец, я добавляю половину высоты спрайта А, чтобы он идеально располагался поверх спрайта В во время анимации.

Есть ли причина, по которой это не работает так, как я хочу?

Спасибо!


person SimplyKiwi    schedule 21.12.2011    source источник


Ответы (2)


Вы используете boundingBox для одного спрайта и contentSize для другого:

spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2

Ваш spriteA случайно не уменьшен?

person Kreiri    schedule 21.12.2011
comment
Да, это была моя проблема! Не могу поверить, что я не видел этого раньше! :) - person SimplyKiwi; 21.12.2011

если вы хотите установить A поверх спрайта B, вы должны позаботиться о порядке z спрайта. если A имеет большее значение z, A будет выше B, когда A и B имеют одинаковое положение и точку привязки.

Вы можете установить значение z при добавлении дочернего элемента. Вот так:

[self addChild:spriteA z:1 tag:<tagValue int>];
[self addChild:spriteB z:0 tag:<tagValue int>];
person Haroon    schedule 21.12.2011
comment
Значение Z не является проблемой. Это связано с расположением спрайтов. Должно выглядеть так, как будто спрайт B расположен поверх спрайта A. - person SimplyKiwi; 21.12.2011
comment
Вы выполняете какое-то действие на B Sprite? Если да, пожалуйста, остановите это, прежде чем размещать его. - person Haroon; 21.12.2011