私はその問題に何日も苦労してきました: 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;
}