Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Algoritmos  Rotacionar Colisões
Anterior Anterior
 
Próximo Próximo
Nova Entrada 16/6/2009 21:35
  setherK
85 tópicos
3rd Level Poster


Rotacionar Colisões 
Tem como rotacionar um Rectangle, ou Bounding Box, Sphere etc?

Se sim, como? Mee objetivo é verificar colisão com um objeto inclinado.

FLW E VLW!

Meu site com Video-Aulas de Tutoriais: www.devtuts.com.br
 
Nova Entrada 17/6/2009 12:19
  jalf
165 tópicos
Iniciante




Re: Rotacionar Colisões 
Modificado Por jalf  em 17/6/2009 9:21:20)
O jogo é em 2D? Porque se for em 3D você rotaciona seu  boundingbox junto com o objeto..não tem nada diferente.
Se for em 2D, você até pode rotacionar os vértices de seu retângulo (lembra das aulas de trigonometria?), mas nesse caso o melhor é você implementar a colisão por pixel, que vai testar a colisão pela intersecção de pixeis entre os dois sprites. Dá uma olhada nesse artigo aqui no Sharpgames e veja se a técnica não pode lhe ajudar. Tem um outro excelente no Creators Club que você deve dar uma olhada.
Se mesmo assim quiser usar boundingbox, esse outro artigo pode te ajudar.

Microsoft Most Valuable Professional e Administrador do Sharpgames. jalfbr's Gamercard
 
Nova Entrada 17/6/2009 17:02
  setherK
85 tópicos
3rd Level Poster


Re: Rotacionar Colisões 
Hum. O jogo vai ser em 2D mas pode ser 3D.

Mas como assim rotacionar? Pode dar um trecho de código?

Porque a estrutura boundingBox aceita só o Min e Max. Não vi nada relacionado a rotação =.="

Mas posso estar cego. Ajuda ae por favor!

FLW E VLW!

Meu site com Video-Aulas de Tutoriais: www.devtuts.com.br
 
Nova Entrada 17/6/2009 23:07
  jalf
165 tópicos
Iniciante




Re: Rotacionar Colisões 
Antes vamos ver se estamos falando a mesma coisa. Já viu esse artigo aqui no Sharpgames?
Agora, se for 3D, você vai criar um boundingbox como abaixo:

BoundingBox b = BoundingBox.CreateFromPoints(vertexs);     

Onde vertexs é a sua lista de vértices.

Sendo simplista, ..se você vai rotacionar seu objeto (rotacionando os vértices), você altera também o boundigbox a cada rotação, recriando o boundingbox a partir dos vértices rotacionados. Isso não é o mais eficiente, mas é o mais simples.
Outra alternativa é usar um BoundingSphere, aí você nem precisa se preocupar em rotação, apenas nas translações.

Esse exemplo aqui também é legal porque usa uma biblioteca para testes de colisão mais precisa (baseada em triângulos).

Isso tudo só vale se você sabe rotacionar um objeto 3D. Se não sabe então sugiro fortemente que você procure fazer algo mais básico antes de tentar testar colisões. Colisões em 3D é uma das partes mais complexas em qualquer engine.

Microsoft Most Valuable Professional e Administrador do Sharpgames. jalfbr's Gamercard
 
Nova Entrada 18/6/2009 20:12
  setherK
85 tópicos
3rd Level Poster


Re: Rotacionar Colisões 
Valeu mesmo cara.

Então eu rotaciono o vertice com o Matrix.CreateRotationX e talz certo,, igual ao modelo?

Pode deixar, eu trabalho pouco mas sei o básico do 3D =P

FLW E VLW!

Meu site com Video-Aulas de Tutoriais: www.devtuts.com.br
 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Algoritmos  Rotacionar Colisões
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso