2012-01-20 5 views
0

В Cocos2D, я бы хотел, чтобы спрайт располагался на координате экрана, а не на координате карты. Я думал, что могу получить с помощью convertToNodeSpace, но он, похоже, не делает то, что я хочу.Место спрайта относительно точки на экране, а не на карте

Я подумал, что это должно поместить спрайт в середине моего экрана IPad:

selectionScreenOverlaySprite.position = [self convertToNodeSpace:CGPointMake(512, 384)];

Но это не так. Он также размещает его в другом месте в зависимости от размера моей карты. Кто-нибудь знает, что я должен использовать? Я также пробовал: convertToWorldSpace, convertToNodeSpaceAR и convertToWorldSpaceAR.

ответ

1

Попробуйте это:

CGSize wins = [[CCDirector sharedDirector] winSize]; 
[yourSprite setPosition:CGPointMake(wins.width/2, wins.height/2)]; 

Это лучше, чем при использовании жестко закодированные значения, потому что она будет работать независимо от разрешения.

+0

Спасибо. Это полезно знать, но оно все равно помещает его в другое положение в зависимости от размера карты. Кроме того, я могу просматривать противоположную сторону карты, когда она помещена, что может добавить к этой проблеме. – VagueExplanation

+0

Что это за карта, о которой вы говорите? Это слой, к которому добавлен спрайт? Если это так, это повлияет на его положение. Добавьте его к слою, который имеет те же границы, что и экран. –

+0

Хорошо, я понимаю, но это также приведет к другому порядку спрайта по отношению ко всему остальному, не так ли? Он добавляется к себе, это CCLayer, который отображает карту. – VagueExplanation