Como criar terreno de jogo 2D?

8

No mês passado, experimentei muito no desenvolvimento de jogos usando o cocos2d para o iPhone, especialmente em mover e modificar sprites. No entanto, vértices e polígonos ainda são coisas novas para mim.

Eu desenvolvi um algoritmo que cria um conjunto de pontos. Agora eu quero usá-los para criar meu terreno 2D. Aqui está como fica quando eu conecto os pontos em java, para que você possa ter uma ideia

Um gráfico de linhas de pontos conectados

Os pontos estão conectados com linhas. No entanto, um terreno de jogo real é uma forma colorida ou com uma textura sobreposta, certo? Por exemplo:

Uma imagem do terreno no jogo com uma aparência bonita

Como eu poderia usar meus pontos para criar um terreno assim?

O que eu tentei até agora é que criei uma matriz e a preenchi com meus pontos. Eu passo esse array para esse método

void ccDrawPoly ( const CGPoint *  vertices,
    NSUInteger  numOfVertices,
    BOOL  closePolygon   
)   

desenha um polígono dado um ponteiro para as coordenadoras do CGPoint e o número de vértices medidos em pontos. O polígono pode ser fechado ou aberto

Na verdade, isso desenha uma forma simples. Mas, a partir da imagem azul, parece que não há uma forma, mas muitas.

Compartilhe seu conhecimento sobre como criar terreno de jogo em 2D.

Atualização 03.06.2011

Com base nas duas boas respostas, tenho o seguinte resultado

insira a descrição da imagem aqui

Perdido em OWL
fonte

Respostas:

5

A solução fácil / ingênua seria simplesmente pegar seus pontos existentes e, para cada ponto, ter um ponto correspondente que esteja na mesma posição Y, mas fora da tela. A partir daí, crie seu polígono usando, digamos, pontos 0, 1, par de 1 e par de 0 e passe-o para o método DrawPoly. Continue com (1, 2, par 2, par 1), etc.

Tetrad
fonte
Y representa a altura. Não entendo como pode ser o mesmo Y, mas fora da tela ao mesmo tempo. Eu significaria que o X está fora da tela ...? Eu não entendi sua ideia.
Lost in OWL
11
Substitua Y por X então. São apenas pontos que são diretos.
Tetrad
As linhas na sua imagem atualizada devem estar apontando diretamente para baixo. Não cruzando.
Tetrad
Ótimo, entendi. Veja minha atualização :)
Lost in OWL
4

Eu percorreria sua matriz dois pontos por vez, extrapolando mais dois pontos (usando o valor X para cada um dos dois e tornando o valor Y 0) para fornecer a parte inferior da sua forma. Passe esses quatro pontos para ccDrawPoly () e repita até ficar sem os valores da matriz.

então, se você diz:

P1 = (0, 25)
P2 = (5, 30)
P3 = (10, 20)
P4 = (15, 25)
for the first shape, you pass in P1, P2, (0, 0), and (5, 0)
second shape is P2, P3, (5, 0), (10, 0)
third shape is P3, P4, (10, 0), (15, 0)
etc...
Ren, o Imundo
fonte