Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Alex_Wallace en Diciembre 29, 2014, 04:06:05 AM

Título: ¿Variable global?
Publicado por: Alex_Wallace en Diciembre 29, 2014, 04:06:05 AM
Buenas, estoy aprendiendo GML y la verdad, me surgió una duda, ¿como puedo crear una variable de vida que por ejemplo, tengo 5, y que al colisionar contra X objeto, le reste una vida, ¿alguien me puede explicar eso?
Desde ya le agradezco muchísimo.
Título: Re:¿Variable global?
Publicado por: penumbra en Diciembre 29, 2014, 05:16:21 AM
En el objeto que tiene vida, agregas una evento CREATE y ahí pones [gml]vida = 5[/gml]

La colisión se puede manejar de distintas maneras, una es agregando un evento de colisión en el mismo objeto que tiene "vida", ahí especificas que la colisión es contra el objeto X. Al revés también se puede: en el objeto x se agrega un evento de colisión contra el objeto que tiene vida. Otra manera es sin usar eventos de colisión, sino funciones de colisión en STEP (de cualquiera de los dos objetos). Las funciones de colisión son:
http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/index.html (http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/index.html)

Si la resta de vida se hace en el mismo objeto que tiene vida, símplemente es [gml]vida -= 1[/gml], si la resta se hace en el otro objeto, entonces sería [gml]mi_objeto_con_vida.vida -=5[/gml], obviamente cambiando el nombre del objeto por el correspondiente a tu juego. Si la variable es global, entonces no hay necesidad de usar el ultimo ejemplo, sería como el primero

Al quitar vida, se debe usar una condición IF, porque puede suceder que la colision ocurra muchos STEPS continuos, en los cuales se restaria vida, con lo que se le acabaría la vida muy pronto a ese objeto, cosa que casi nunca se desea