Нужна помощь в понимании позиций спрайта в cocos2d? - PullRequest
1 голос
/ 07 июля 2011

Я новичок в cocos2d. Я создал простой пример

  CGSize winSize = [[CCDirector sharedDirector] winSize];
    CCSprite *player = [CCSprite spriteWithFile:@"Player.jpg" 
                                           rect:CGRectMake(0, 0, 27, 40)];
    player.position = ccp(player.contentSize.width/2, winSize.height/2);
    [self addChild:player];     

, но мне не совсем ясно, как спрайт управляет им

1 Ответ

5 голосов
/ 07 июля 2011

Ваш код создаст спрайт и поместит его в родительский узел так, чтобы его левый нижний угол был равен ccp(player.contentSize.width/2, winSize.height/2).

Если вам интересно, почему ваш спрайт не центрирован относительно предоставленной вами координатыответ таков: позиционируется нижний левый угол, а не центр спрайта.

Вы можете настроить это поведение, определив свойство anchorPoint спрайта, например:

 player.anchorPoint = ccp(0.5,0.5);
 player.position = ...

РЕДАКТИРОВАТЬ:

Вы можете думать о точке привязки как "центр тяжести" спрайта: текстура сосредоточена вокруг нее, любое масштабирование или другой вид преобразования будет относительно нее.

Если точка привязки установлена ​​в (0,0), то она совпадает с левым нижним углом (по умолчанию);если это (0,5, 0,5), то это точно в середине спрайта (50% ширины, 50% высоты).Его координаты не точка, а относительное смещение внутри спрайта;координаты могут идти от 0,0 до 1,0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...