Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema de lógica de un juego tipo asteroids

Estas en el tema de Problema de lógica de un juego tipo asteroids en el foro de C/C++ en Foros del Web. ¡Hola a todos! Estoy haciendo un asteroids y tengo un problema a nivel de lógica, no de lenguaje. El caso es que yo tengo una ...
  #1 (permalink)  
Antiguo 17/07/2013, 04:05
Avatar de Yawin  
Fecha de Ingreso: enero-2012
Ubicación: En Narnia.
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Problema de lógica de un juego tipo asteroids

¡Hola a todos!
Estoy haciendo un asteroids y tengo un problema a nivel de lógica, no de lenguaje.

El caso es que yo tengo una nave que tiene:
-Un punto de origen X e Y
-Cuatro vértices periféricos cuyas coordenadas se guardan en coordenadas polares (es decir, un vector que parte del centro de la nave).

Y tengo un asteroide que tiene:
-Un punto de origen X e Y
-Nueve vértices periféricos cuyas coordenadas se guardan en coordenadas polares (es decir, un vector que parte del centro de la asteroide).

La cosa es que quiero calcular si colisionan, y no se cómo hacerlo. ¿Alguien tiene alguna idea de cómo podría hacerlo?

Este es el código, por si ayuda: http://pastebin.com/CTnnG2G5
  #2 (permalink)  
Antiguo 17/07/2013, 05:17
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Problema de lógica de un juego tipo asteroids

El tema de la detección de colisiones es algo tan tan amplio... Que hay mil maneras y mil trucos para hacerlo. Desde usar una segunda "pantalla" con objetos de diferente color para detectar la colisión, como a nivel puramente matematico ver si dos planos/areas se solapan.

Aqui tienes un buen tutorial en castellano sobre teoría de colisiones en 2D, espero que te sirva :)
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 17/07/2013, 05:21
Avatar de Yawin  
Fecha de Ingreso: enero-2012
Ubicación: En Narnia.
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema de lógica de un juego tipo asteroids

Muchas gracias, es interesante, aunque mi problema es que mis figuras están delimitadas por polares (o sea ro y tita) y no por x e y, y no se si podria aplicar eso, pero creo que me ha dado una idea.
  #4 (permalink)  
Antiguo 17/07/2013, 05:34
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Problema de lógica de un juego tipo asteroids

Bueno, transformar coordenadas polares a coordenadas cartesianas es aplicar una función y listos, no? Es matemática pura y dura ;)
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 17/07/2013, 05:43
Avatar de Yawin  
Fecha de Ingreso: enero-2012
Ubicación: En Narnia.
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema de lógica de un juego tipo asteroids

No se cómo explicar mi problema, pero no es tan sencillo como pasarlas a cartesianas y ya está xDD

Pero bueno, se me ha ocurrido una solución parecida al tetris:
Creo una tabla[][] con tantas casillas como pixeles ocupa un recuadro al rededor del asteroide. Las casillas donde este está se ponen en 1 y el resto en 0. Luego, hago lo mismo con la nave, y compruebo coincidencias.
  #6 (permalink)  
Antiguo 17/07/2013, 05:56
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Problema de lógica de un juego tipo asteroids

Cita:
Iniciado por Yawin Ver Mensaje
No se cómo explicar mi problema, pero no es tan sencillo como pasarlas a cartesianas y ya está xDD

Pero bueno, se me ha ocurrido una solución parecida al tetris:
Creo una tabla[][] con tantas casillas como pixeles ocupa un recuadro al rededor del asteroide. Las casillas donde este está se ponen en 1 y el resto en 0. Luego, hago lo mismo con la nave, y compruebo coincidencias.
Lo puedes hacer a nivel de pixel directamente, busca información sobre el algoritmo de colisiones "Pixel perfect" :)
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 17/07/2013, 06:00
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Problema de lógica de un juego tipo asteroids

Si no necesitas un detector de colision muy muy preciso puedes hacer una pequeña chorrada pero que suele funcionar.

Tienes dos objetos con sus posiciones y el espacio que ocupan, entonces miras si uno esta arriba del otro, si uno esta a la derecha, a la izq o abajo. Y si no es ninguna de estas es que chocan.

Simple pero efectivo :)
  #8 (permalink)  
Antiguo 17/07/2013, 07:34
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Problema de lógica de un juego tipo asteroids

Cita:
Iniciado por L3m0n Ver Mensaje
Si no necesitas un detector de colision muy muy preciso puedes hacer una pequeña chorrada pero que suele funcionar.

Tienes dos objetos con sus posiciones y el espacio que ocupan, entonces miras si uno esta arriba del otro, si uno esta a la derecha, a la izq o abajo. Y si no es ninguna de estas es que chocan.

Simple pero efectivo :)
En realidad no, porque no busca solapamientos, sino colisiones. Una colisión es como cuando con tu coche rozas con otro o lo golpeas al aparcar. Mientras que una colisión es cuando tienes tu coche incrustado encima del otro xD

Para un juego lo que se buscan detectar son las colisiones porque se producen antes ;)
__________________
Aviso: No se resuelven dudas por MP!
  #9 (permalink)  
Antiguo 17/07/2013, 07:42
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 4 meses
Puntos: 46
Respuesta: Problema de lógica de un juego tipo asteroids

Cita:
Iniciado por Malenko Ver Mensaje
En realidad no, porque no busca solapamientos, sino colisiones. Una colisión es como cuando con tu coche rozas con otro o lo golpeas al aparcar. Mientras que una colisión es cuando tienes tu coche incrustado encima del otro xD

Para un juego lo que se buscan detectar son las colisiones porque se producen antes ;)
Bueno, ya he dicho que no es el sistema perfecto, pero para cosas no muy complejas funciona, por ejemplo para un pong o algun juego de estos simples, así que para el asteroids supongo que también.
  #10 (permalink)  
Antiguo 17/07/2013, 12:32
Avatar de Yawin  
Fecha de Ingreso: enero-2012
Ubicación: En Narnia.
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema de lógica de un juego tipo asteroids

Para el asteroids no sirve porque el centro de un asteroide podría estar tranquilamente a 100 píxeles de su perímetro. Y lo que se busca es el momento en el que dos perímetros se encuentran.

Etiquetas: juego, tipo, vector
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:11.