|
 | | |
|
| |  |   |  |  | |  |  | |  |  | |  |  | |  | |
 | | | |
Boa noite, estou fazendo um jogo onde você controla um helicoptero, vi os tutoriais no xna creators de colisão mas os mesmo não ajudaram muito.
gostaria de fazer um teste tipo, pego o X Z do modelo, olho na mionha textura de mapa de alturas naquela posicao e testo o Y do modelo com o terreno.
tentei criar esse método
public float ColisaoTerreno(Texture2DContent input, Vector3 posicaoHeli)
{
input.ConvertBitmapType(typeof(PixelBitmapContent<float>));
PixelBitmapContent<float> heightfield;
heightfield = (PixelBitmapContent<float>)input.Mipmaps[0];
for (int y = 0; y < heightfield.Height; y++)
{
for (int x = 0; x < heightfield.Width; x++)
{
Vector3 position;
position.X = (x - heightfield.Width / 2) * 3 //escala do meu terreno;
position.Z = (y - heightfield.Height / 2) * 3//escala do meu terreno;
position.Y = (heightfield.GetPixel(x, y) - 1) * 320;
if (position.X == (posicaoHeli.X / 2) * 3 && position.Z == (posicaoHeli.Z / 2) * 3)
if (positionHeli.Y > posicao.Y)
return position.Y + 10;
}
}
return posicaoHeli.Y;
}
Para verificar se o Helicoptero está embaixo do terreno, só que nao sei como carregar o meu .bmp do terreno de alturas no Texture2DContent.
alguém pode me dar uma luz, ou algum outro método de fazer esse test de colisão? |
|
|
|  |  | | | |
Quorthon3D escreveu
Boa noite, estou fazendo um jogo onde você controla um helicoptero, vi os tutoriais no xna creators de colisão mas os mesmo não ajudaram muito.
gostaria de fazer um teste tipo, pego o X Z do modelo, olho na minha textura de mapa de alturas naquela posicao e testo o Y do modelo com o terreno.
tentei criar esse método
public float ColisaoTerreno(Texture2DContent input, Vector3 posicaoHeli)
{
input.ConvertBitmapType(typeof(PixelBitmapContent));
PixelBitmapContent heightfield;
heightfield = (PixelBitmapContent)input.Mipmaps[0];
for (int y = 0; y < heightfield.Height; y++)
{
for (int x = 0; x < heightfield.Width; x++)
{
Vector3 position;
position.X = (x - heightfield.Width / 2) * 3 //escala do meu terreno;
position.Z = (y - heightfield.Height / 2) * 3//escala do meu terreno;
position.Y = (heightfield.GetPixel(x, y) - 1) * 320;
if (position.X == (posicaoHeli.X / 2) * 3 && position.Z == (posicaoHeli.Z / 2) * 3)
if (positionHeli.Y > posicao.Y)
return position.Y + 10;
}
}
return posicaoHeli.Y;
}
Para verificar se o Helicoptero está embaixo do terreno, só que nao sei como carregar o meu .bmp do terreno de alturas no Texture2DContent.
alguém pode me dar uma luz, ou algum outro método de fazer esse test de colisão? |
Se eu não entendi errado o que vc quer fazer entre seu Helicopitero e o seu terreno pode ser feito tranquilamente com o que é mostrado neste exemplo do Creators: HeightMap. Se tu já tinha visto este exemplo diz ai pra gente pq ele não ajudou muito! Lá no projeto desse Exemplo, tem um método chamado GetHeight, aonde tu pode passar a posição X, Y, Z do teu Helicopitero... MCP, MCTS. Administrador do SharpGames. Game Developer(C++) at Manifesto Game Studio
Meu Blog: lucianojosefj.spaces.live.com |
|
|
|  |  | | | |
| Então implementei esse exmplo no meu código, só que não consegui funcionar, pois o helicoptero andava como um carro, grudado no terreno, e como meu terreno é escalado, pois o mundo é grande, ele dava estouro de índice na hora de verificar a posição. |
|
|
|  |  | | | |
| Consegui aplicar colisão com o terreno com esse exemplo sim, arrumei a parada do estouro de índice. vlw |
|
|
|
|  |  | |  |  | |  |  | |  |
|
|
  |
| | |
|
|
|  |
 |  |
|