Como puedo hacer que suceda esto en Game Maker? Ayuda!!!

Publicado por KootGok, Julio 27, 2020, 09:09:14 PM

Tema anterior - Siguiente tema

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

KootGok

 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. :'( :'( :'(

3dgeminis

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:
[gml]
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
}
[/gml]

Powered by EzPortal
SMF spam blocked by CleanTalk