2009-05-17 3 views
1

В 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; 
} 

ответ

1

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

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

- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint; 

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

EDIT: OP, если вы прочтете это, какую версию Cocos2D вы используете? Я считаю, что 0,8 (в настоящее время в svn туловище) меняет то, как работает привязка; для дальнейшего использования может быть полезно другим узнать, с чем вы работаете.

0

У меня это работает! Для тех, кто хочет знать, вот код ...

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

24 составляет половину от спрайтов ширина

64,5 составляет половину высоты спрайтов

Смежные вопросы