我一直在爲那個問題奮鬥了幾天:我有CCNode >> StateComponent和StateComponent中有一個CCSprite作爲屬性,並將它作爲子組件添加到StateComponent中。當我設置StateComponent對象的位置而不是Sprite的位置時,StateComponent對象的邊界框出現在正確的位置。精靈位置的默認值在(0,0)上設置。精靈的邊界框出現在(0,0),但精靈紋理從(0,0)開始移動。 之後我將StateComponent對象添加到CCScene中。精靈的紋理位置發生了變化[cocos2d v3]
也許有人可以幫助我建議:我如何設置精靈位置,使紋理和邊界框出現在與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;
}
張貼相關的代碼中添加文本,你的問題。僅基於描述,不能調試。我猜你可能會將anchorPoint從默認的0.5,0.5改爲。或者,您可能沒有考慮到子節點位置與其父母的位置相關,也許您需要convertToWorldSpace/convertToNodeSpace。還要注意,boundingBox是一個考慮了所有這些方面的屬性,而確定邊界框的自定義代碼可能不是。 – LearnCocos2D
感謝您的回覆!我已經添加了代碼。我不改變定位點。我所做的就是設置節點(StateComponent)的位置。我也嘗試convertToWorldCoordinates,反之亦然,但隨機設置紋理...不幸的是,我不能添加屏幕截圖... – UnhappyStudent
如果我直接添加精靈到場景(但它仍然是StateComponent的屬性),那麼它顯示在正確的位置。 – UnhappyStudent