holas estoy trabajando en un proyecto shooter 2d en el cual cree dos personajes, uno azul y otro rojo que se tienen que matar mutuamente, a estos los pude configurar bien para que se muevan (con las teclas w,a,s,d-arriba,abajo,derecha,izquierda, respectivamente), para que disparen 4 proyectiles diferentes(cuales todavía no he configurado)(con las teclas 1,2,3,4-k,l,i,o  respectivamente)y ,como prueba, le puse una barra de salud al azul cual funciona medianamente bien (aunque hay que hacerle un par de ajustes  :D ) el problema es el siguiente en el hud (como algunos lo llaman no se por que) de las vidas, no la barra de salud si no en el "hud" de las vidas  se restan automaticamente una por una las vidas y no se porque....
aca les dejo el proyecto...por cierto no me interesa si me lo roban o no el proyecto solo lo estoy haciendo para aprender pero por favor que alguien me ayude

#1 Abril 17, 2015, 06:34:14 PM Ultima modificación: Abril 17, 2015, 06:38:38 PM por penumbra
Cita de: krshnathar en Abril 17, 2015, 06:10:59 PM
en el "hud" de las vidas  se restan automaticamente una por una las vidas y no se porque....
Los dos eventos donde GENERALMENTE se manejan las colisiones son
a) El evento de colision
b) El evento step mediante alguna función que evalúe la colisión

Estos dos eventos se ejecutan RECURRENTEMENTE. Si tienes un evento de colisión BALA - PERSONAJE, o PERSONAJE - BALA, o revisas colisiones entre esos dos objetos en STEP, cuando esos dos objetos chocan o se intersectan, se lanza el evento de colisión o se prueba la función de colisión en STEP.

Ten en cuenta que CASI SIEMPRE, aunque la bala lleve velocidad, la bala está en contacto con el personaje MÁS DE UN STEP. Esto quiere decir que el evento de colisión se va a ejecutar más de una vez, o la función de colisión se va a llamar más de una vez. Si cada que hay colisión, restas una vida del personaje, entonces, las vidas van a bajar muy rápido porque un STEP o evento de colisión se ejecuta 30 o 60 veces por segundo generalmente. Por esta razón las vidas se "restan automáticamente"

Otro motivo de por qué se restan automáticamente es que, si en el evento de colisión se hace algo como esto:
restar_una_vida = true

y luego en STEP se hace esto:
if (restar_una_vida)
{
     vidas -= 1
}


la variable restar_una_vida se queda siempre en true, por lo que ocurrirá lo mismo: las vidas se van a restar una tras otra sin parar

NOTA: Tu proyecto está vacío. Cuando se quiere compartir un archivo .gmx, Se tiene que compartir toda la carpeta del proyecto, o el juego no se podrá cargar. Otra opción para compartir el proyecto es exportar como archivo comprimido desde el menú File

muchas gracias por contestr penumbra  :D ahi  sub  :-[


Al abrir el proyecto, me di cuenta que está en Drag and drop. No es por ser mala onda, pero en verdad, usar D&D a mi se me hace horrible (no tengo nada en contra de la gente que usa D&D, pero sí del sistema D&D).

Por salud mental, no uso D&D. El error es lo que comenté antes. En el evento de colisión con la explosión, restas la vida directamente. Eso no se debe hacer. Antes de restar vida, debes usar una condición para saber si se puede restar vida. La variable que se usa en esa condición se tiene que controlar en una alarma. Esto es para que entre cada "impacto" o "golpe", haya un tiempo de espera, y que la vida no se baje en cada paso, sino que se baje una vez, se espere un par de segundos (en los cuales el jugador no puede ser dañado) y luego la alarma cambie esa variable de nuevo a true para que el jugador pueda recibir daño de nuevo.

Mi sugerencia es que comiences a usar GML