Problema con orientacion de disparo.SDL[C++]

Consulte acerca de programas, técnicas, algoritmos etc.

Problema con orientacion de disparo.SDL[C++]

Notapor Faqndo » Dom May 13, 2012 4:38 pm

Buenas comunidad, tengo un problemilla que me corroe y no me deja avanzar en mi proposito de hacer un juego de tematica parecida al the abinding of isaac, tengo en mente crear un primer nivel que sea como un survival donde me saldran cada vez mas enemigos.


Tengo creados los enemigos en una clase, al igual que el disparo y el player, el problema viene cuando quiero que el disparo que hago, salga de mi pesonaje, pase por la posicion que tenia el raton al apretar para disparar y que siga hasta salir de la pantalla, he intentado hacer una triangulacion de trigonometria con la posicion del player respecto a la de la posicion del raton pero no acaba de salir.


A alguien le ha pasado y lo ha solucionado?.

Gracias de antemano
Faqndo
 
Mensajes: 10
Registrado: Dom May 13, 2012 4:36 pm

Re: Problema con orientacion de disparo.SDL[C++]

Notapor kaiser » Dom May 13, 2012 10:58 pm

Para que el disparo empiece justo donde está el personaje simplemente haz que al crear el disparo sus coordenadas X e Y sean las del personaje. Para que el disparo avance en la dirección del cursor tienes que calcular la rotación relativa entre el cursor y el personaje. Aquí te dejo el código en python:

distancia = math.sqrt((ratonX - personajeX)**2 + (ratonY - personajeY)**2)
if distancia == 0: distancia = 1
rotacion = math.degrees(math.asin((personajeY - ratonY) / distancia))
if ratonX < personajeX: rotacion = -(180 + rotacion)


En la primera línea calculamos la distancia entre el personaje y el cursor (ratón). En la segunda línea nos aseguramos de que la distancia nunca es cero para evitar una división por cero. En la tercera línea calculamos la rotación verticalmente, es decir, calculamos como de "arriba" o "abajo" estamos apuntando pero no sabemos si estamos apuntando hacia la derecha o hacia la izquierda. En la cuarta línea calculamos si estamos apuntando a la derecha o a la izquierda.

Espero que este código se pueda traducir a C fácilmente y te ayude. Cualquier otra duda sigue preguntando xD

Un saludo!
De la API al IDE y del IDE a la API.
Avatar de Usuario
kaiser
 
Mensajes: 121
Registrado: Mié Nov 24, 2010 7:47 pm
Ubicación: Madrid (España)

Re: Problema con orientacion de disparo.SDL[C++]

Notapor sofoke » Lun May 14, 2012 12:53 am

Como dato extra, pues veo que kaiser da una buena idea y un excelente codigo, creo que para que los disparos no se muevan junto con el cursor una vez creados, seria guardar en la misma estructura que la que contiene la posicion en X e Y del disparo las coordenadas X e Y del cursor en el momento que fue creado el disparo. Asi; de este modo el disparo seguira su trayectoria sin importar si el mouse siguie o no en esas coordenadas.
...cuando lo popular no es suficiente...
Gnu-Linux-y-Más
Avatar de Usuario
sofoke
 
Mensajes: 102
Registrado: Jue May 24, 2007 8:10 pm
Ubicación: México

Re: Problema con orientacion de disparo.SDL[C++]

Notapor kaiser » Lun May 14, 2012 10:49 am

Gracias por la aclaración sofoke. Lo había dado por sentado y por eso no lo he dicho pero lo que yo hago es almacenar la rotación, es decir, calculamos la rotación solo al generar el disparo y luego aplicamos los siguientes cálculos

proyectilX += math.cos(math.radians(rotacion)) * 10
proyectilY -= math.sin(math.radians(rotacion)) * 10


El 10 es la cantidad que queremos aumentar la posición, se puede cambiar según quieras que vaya más rápido o más despacio. Las coordenadas X e Y y la rotación las almaceno en un array.

Un saludo!
De la API al IDE y del IDE a la API.
Avatar de Usuario
kaiser
 
Mensajes: 121
Registrado: Mié Nov 24, 2010 7:47 pm
Ubicación: Madrid (España)

Re: Problema con orientacion de disparo.SDL[C++]

Notapor kingwar » Vie May 18, 2012 3:02 am

es incrible ver la cantidad de veces que repiten la misma pregunta en varios foros...
este pregunto lo mismo en 3 foros...incluyendo este buehh igual por aqui le "respondimos" en realidad no ayude xD...
"pero si estudias computacion deberias saber manejar todos los programas" conclusion:usuario no es gente

-linkingcrk- http://baulprogramas.blogspot.com/
Avatar de Usuario
kingwar
 
Mensajes: 35
Registrado: Dom Abr 10, 2011 9:32 pm
Ubicación: Venezuela-Miranda

Re: Problema con orientacion de disparo.SDL[C++]

Notapor kiketom » Vie May 18, 2012 7:29 pm

Este artículo que me paso Hugo me sirvió para entender algunas cosas. :D

http://www.losersjuegos.com.ar/referencia/articulos/seno_coseno
Avatar de Usuario
kiketom
 
Mensajes: 82
Registrado: Lun Ene 03, 2011 3:01 pm
Ubicación: Valencia, España

Re: Problema con orientacion de disparo.SDL[C++]

Notapor shackra » Mié Sep 12, 2012 4:54 am

Matematicas, que chiva!! :D
.
.
.
.
.
.
~_~
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado