Pergunta

Acabei de ler parte da documentação do Cocos2D e, tanto quanto eu entendo para adicionar uma imagem de fundo a uma camada, você precisa fazer algo como:

Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
[layer addChild:bg z:0];

No entanto, no que diz respeito aos meus testes, você pode adicionar diretamente o sprite à cena como esta:

@implementation IntroScene
- (id) init {
self = [super init];
if (self != nil) {
    Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
    [bg setPosition:ccp(240, 160)];
    [self addChild:bg z:0];
    [self addChild:[MenuLayer node] z:1];
}
return self;

}

Qual é a diferença entre essas duas opções e qual é a melhor maneira de definir um plano de fundo para uma camada?. Qualquer ajuda será muito apreciada.

Foi útil?

Solução

Você não precisa ter uma camada, mas eles são úteis. Pense nas camadas como uma maneira de agrupar sprites (visual e organizacional). Você pode querer suas imagens de fundo agrupadas como camada e todos os inimigos em um jogo como outra camada. Isso permite que você lide com cada um conjunto de maneira mais limpa. Por exemplo, você pode remover uma camada específica em vez de encontrar todos os inimigos e removê -los.

Se ajudar, brinque com camadas no Photoshop ou em um programa de edição de gráficos. Camadas em Cocos2d funcionam da mesma forma.

Para uma cena simples, adicionar o plano de fundo a uma camada ou a uma cena não fará muita diferença. Mas não demora muito para que os benefícios de camadas entre em ação.

Outras dicas

Também as camadas controlam a ordem de desenho (acima e acima de qualquer pedido de z de camadas).

Em Geospark, por exemplo, tenho uma camada de fundo, uma camada de faísca, uma camada de interface do usuário, etc. (simplificada). Mas isso me permite garantir que minhas coisas da interface do usuário estejam sempre acima de qualquer material de jogo (a camada de faísca) e tudo o que está acima do fundo.

Se o seu jogo fizer apenas renderização aditiva, a ordem do desenho não importará muito. :)

- David

A cena é um quadro -negro, a camada é uma página ... as notícias são escradas na página, mas, se você quiser, pode escrever no quadro. Se você deseja apagar tudo novo.

No Cocos2d, podemos adicionar qualquer nó em qualquer nó. Mas depende do nível de hierarquia.

Você pode adicionar camadas nas cenas. Se você deseja a mesma propriedade ou procure todas as camadas que adicionarem em uma ccscene, poderá adicioná -las na ccscene (como no seu segundo caso). Mas se você deseja ter um recurso diferente em cada camada, adicione -os ao CCLayer.

O CCLAYER destina -se a agrupar um conjunto de nós/sprites para alguma finalidade. Por exemplo, você pode adicionar uma camada que inclui opções depois de fazer uma pausa em um jogo ou camada de HUD para exibir o SOM Kind sempre na tela, juntamente com alguma camada de rolagem (comparar alguns jogos de plataforma de rolagem).

Finalmente, você pode até CCNODE em uma CCScene, uma camada em outra camada e até mesmo um ccnode em um CCSPRITE. Mas a ordem de desenhar no contexto gráfico no Cocos2D difere.

Espero que você tenha a diferença.

Boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top