(Cocos2D) Спрайт не идеально сидит поверх другого спрайта? - PullRequest
0 голосов
/ 21 декабря 2011

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

Нет, я не могу просто сделать 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 к учетной записи для точки привязки, затем, наконец, я добавляю половину высоты spriteA, чтобы она идеально сидела поверх spriteB во время анимации.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

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

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

Ваш спрайт А уменьшен случайно?

1 голос
/ 21 декабря 2011

, если вы хотите установить верхнюю часть спрайта 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>];
...