Próbuję umieścić serię spritesów na warstwie, ale ponieważ chcę przenieść wszystkie sprity jako grupę, stworzyłem CocosNode, ustawię to na tym samym rozmiar jako ekran i umieść go na środku ekranu, a następnie dodaj sprite do tego węzła (lightNode) zamiast dodawać je do warstwy.Cocos2d - wiele duszków na macierzystym węźle nie warstwa
To, co widzę, to to, że duchy nie pojawiają się w poprawnych (takich samych?) Pozycjach w porównaniu do sytuacji, kiedy umieszczam je w warstwie, a nie w węźle światła.
Zrobiłem program testowy, aby pokazać problem za pomocą szablonu aplikacji Coco2d XCode "Hello World" - I następnie zastąpił metodę -init() klasy HelloWorld w HelloWorldScene.m tym kodem.
-(id) init
{
if((self=[super init]))
{
// create my parent node that will contain all the related sprites
lightPane = [[CocosNode alloc] init];
CGSize paneSize = { 480, 320 };
[lightPane setContentSize:paneSize];
[lightPane setPosition:ccp(240, 160)];
// add pane to layer
[self addChild:lightPane z:0];
// add a series of sprites to demonstrate the problem
int y = 40;
int x;
for (x=30; x<300; x+=20)
{
Sprite *sp = [Sprite spriteWithFile:@"pause.png"];
[sp setPosition:ccp(x, y)];
NSLog(@"Next sprite at position (%d, %d)", x, y);
[lightPane addChild:sp z:1];
//[self addChild:sp z:1];
x+= 20;
}
}
return self;
}
Kod ten odnosi się do pliku PNG o nazwie „pause.png” - wystarczy wziąć każdy mały obraz o rozmiarze 30x30 pikseli i umieścić ją w tym projekcie, aby go uruchomić.
To, co zobaczysz, to pojawienie się ikonek mniej więcej w połowie ekranu, zaczynając od środka i przechodząc w prawą stronę.
Jeśli skomentujesz linię dodającą duszek do lekkiej planszy i anulujesz komentarz poniżej linii, i ponownie uruchomisz próbkę, zobaczysz, że duchy (poprawnie) pojawiają się na współrzędnych, które powinny.
To oczywiście ma coś wspólnego z CocosNode, którego używam jako rodzica dla duszków. Czy ktoś widzi, co robię źle?
dobrze sformułowane pytanie i dobry przykład kodu! +1 – nash