Как по центру выровнять спрайт? - PullRequest
1 голос
/ 17 мая 2009

В cocos2d кто-нибудь знает, как центрировать спрайт? Прямо сейчас у меня есть спрайт, который перемещается туда, где вы касаетесь экрана. Проблема в том, что спрайт выровнен по левому нижнему углу. Это означает, что вместо того, чтобы двигаться вниз, если вы слегка коснетесь дна, спрайт будет двигаться вверх. Заранее спасибо!

Вот мой код ...

(BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event {
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView: [touch view]];

    [mainSprite do:[MoveTo actionWithDuration:0.5 position:ccp(point.x, 480 - point.y)]];

    return YES;
}

Ответы [ 2 ]

1 голос
/ 17 мая 2009

Якорь преобразования по умолчанию для спрайтов в Cocos2D - это центр спрайта, поэтому он должен двигаться так, чтобы центр спрайта находился в том месте, к которому вы прикоснулись, как у вас сейчас. Вы изменили привязку преобразования спрайта?

Единственное, о чем я могу подумать, это то, что если ваш mainSprite является дочерним по отношению к другому CocosNode, то вам, возможно, потребуется преобразовать координаты касания в пространство узлов следующим способом:

- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint;

... на родительском узле. Однако я сомневаюсь, что это проблема. Извините, если это бесполезно.

РЕДАКТИРОВАТЬ: OP, если вы читаете это, какую версию Cocos2D вы используете? Я считаю, что 0,8 (в настоящее время в стволе svn) меняет способ работы привязки; для дальнейшего использования может быть полезно узнать, с кем вы работаете.

0 голосов
/ 17 мая 2009

Я получил это работает! Для тех, кто хочет знать, вот код ...

[mainSprite setTransformAnchor:ccp(24.0, 64.5)];

24 - половина ширины спрайтов

64,5 - половина высоты спрайтов

...