Положение текстуры спрайта смещено [cocos2d v3]

В течение многих дней я боролся с этой проблемой: у меня есть CCNode >> StateComponent, а в StateComponent у меня есть CCSprite в качестве атрибута, и я добавляю его как дочерний в StateComponent. Когда я устанавливаю положение объекта StateComponent, а НЕ спрайта, в нужном месте появляется ограничительная рамка объекта StateComponent. Значения по умолчанию для позиции спрайта установлены на (0,0). Ограничительная рамка спрайта появляется в (0,0), но текстура спрайта смещена от (0,0). Затем я добавляю объект StateComponent в CCScene.

Может быть, кто-то может помочь мне советом: как я могу установить позицию спрайта, чтобы текстура и ограничивающий прямоугольник появлялись в той же позиции, что и объект StateComponent? Позже я хотел бы обнаружить, есть ли касание узла (спрайт), а затем повернуть узел со спрайтом.

Любая помощь могла бы быть полезна!!!

@interface StateComponent : CCNode {

}
@end

@implementation StateComponent

-(instancetype) initWithGestureStatewithSprite:(CCSprite*) sprite andPosition: (CGPoint) spritePosition RelativeAngle:(float) angle {

    self = [super init];

    if (!self) {
        return nil;
    }

    self.sprite = sprite;
    self.relativeAngle = angle;
    self.position = spritePosition;

    [self addChild:sprite];
    return self;

}

@end

@interface StateViewScene : CCScene {

}
@end

@implementation StateViewScene 

-(id) init {
    self = [super init];

    if (!self) {
        return nil;
    }

    StateComponent * body = [[StateComponent alloc] initWithGestureStatewithSprite [CCSprite spriteWithImageNamed:@"body.png"] andPosition: CGPointMake(512,384) RelativeAngle:0];

    [self addChild:body];
    return self;

}

2 ответа

Мне удалось решить эту проблему путем преобразования положения пространства StateComponent в пространство узлов пару раз, так как у меня фактически есть структура StateComponents в виде дерева со спрайтами.

Спасибо за помощь!:)

---Редактировать---

Эта статья помогла мне и может быть интересной: http://www.koboldtouch.com/display/IDCAR/Converting+Between+Coordinate+Spaces

Вы пытались установить размер содержимого узла в размер содержимого Sprite?

-(instancetype) initWithGestureStatewithSprite:(CCSprite*) sprite andPosition: (CGPoint) spritePosition RelativeAngle:(float) angle { 
...
self.contentSize = sprite.contentSize;
...
Другие вопросы по тегам