Положение текстуры спрайта смещено [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;
...