Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Como puedo hacer que suceda esto en Game Maker? Ayuda!!!  (Leído 265 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado KootGok

  • Visitante
  • *
  • Puntos: 13
  • Mensajes: 4
    • Ver Perfil
 La verdad es que decidì iniciarme en esto de creación de videojuegos y poco a poco estoy empezando a usar los códigos más sencillos.  Para que sepan estoy trabajando en un juego tipo agario a mi estilo jaja xD (con características un poco diferentes). Todo iba bien hasta cierto punto, hasta que llegó la hora de programar para que los círculos se coman según la masa. Como soy novato en esto, he decidido hacer lo siguiente.
Que al colisionar el jugador con un objeto, este le otorgue 10 puntos y que además se cree una variable global. mass  en el enemigo y en el jugador que incremente el tamaño de la imágen al ir comiendo y comiendo.
global. mass += 0.05 {
image_xscale += 0.05;
image_yscale += 0.05;
}
Lo que sucede en sí (vayamos al grano) es que quiero hacer que según el valor total de la variable en cada uno de los objetos, al colisionar uno con otro, se destruya el objeto correcto ( el más pequeño).
Entonces, se me pasó la idea de comparar ambas variables de cada objeto(si una es menor que suceda esto, y así), pero no pude armar el código correcto, ni tampoco creo que hay opciones de COMPARAR VARIABLES POR OBJETOS Y NO POR VALUE. ¿Que puedo hacer en ese caso?
Quiero algo así, no se si me entiendan, pero como dije, no sé mucho de programar pero quiero aprender:
//en evento colisión
if global. mass(enemigo1)< global. mass(skin1) {
instance_destroy(enemigo1)
}
if global. mass(enemigo1)> global. mass(skin1) {
instance_destroy(skin1)
}
No sé cómo será el código correcto o la forma adecuada de hacerlo. Quisiera ver si me pueden ayudar. :'( :'( :'(

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado 3dgeminis

Respuesta #1 en: Julio 28, 2020, 12:53:03 am
Si por ejemplo tienes una variable global.vida=100 y tienes 10 enemigos que la usan, si un enemigo recibe 10 de daño, TODOS los enemigos reciben 10 de daño.
Si creas una variable local,  vidas=100, cuando le hagas daño a un enemigo, solo se enemigo se le quita vida.
Para resolver tu problema, cuando un objeto colisione con otro, en el evento colision seria de esta manera:
if vida < other.vida {instance_destroy()} ///si la vida es menor que el otro objeto(other), muere

if vida > other.vida {with(other) {instance_destroy()}} ///si la vida es mayor que el otro objeto, el otro objeto muere

if vida = other.vida ///si las vidas de ambos son iguales los 2 reciben 20 de daño
 {
  vida -= 20
  other.vida -= 20
 }

 
Los siguientes usuarios dieron las gracias a este tema: KootGok