[ Duda/Ayuda ]: SELECCIONAR Y PERSEGUIR PERSONAJE
Buen dia compañeros Game Makeros,Mi nombre es HANSEN y estuve buscando y rebuscando en internet pero en ni un lado encontre la respuesta es por eso que les pido su ayuda.
Tengo un problema con la seleccion y persecucion de el personaje como su nombre lo indica, bueno sin mas rodeos les dejo el problema
tengo 3 personajes ( los 3 comparten el mismo sprite PERO no la misma instancia "objeto" ) que llamaremos P1,P2,P3. y los enemigos seran llamados triangulo, cuadrado y circulo.
Ahora, lo que yo quiero es que al dar click con el boton izquierdo del mouse al personaje P1 lo seleccione para despues al dar click a cualquier enemigo vaya y lo busque causando una colision.(aparecen de el lado derecho los enemigos y tienen movimiento por todo el room)
Estuve probando con move towards, mouse_check_pressed y check_button y nada mas no pude hacerlo funcionar...
Bueno y el otro problema que tengo es que quiero que si en la pantalla hay TRES enemigos triangulo y yo selecciono a P1 para que vaya a colisionarse con uno de ellos, quiero que solo destruya el triangulo con el que colisiono, no que se destruyan todos los triangulos.
Si pudiera subir una imagen para explicarme mejor...
eh leido y visto tutoriales de que un tanque dispara misiles que persiguen...el problema es que mi personaje es el misil es por eso que me hace falta una variable lock & load
seria lo unico que me falta para acabar de programar mi juego... bueno faltarian otras cosillas pero eso es mas sencillo y no tan indispensable.
Sin mas por el momento muchas gracias a todos! Por cierto hay alguna comunidad, grupo de whatsapp o facebook de game maker???
En GM existe una variable predefinida llamada id, la cuál es única para cada instancia.
Así que si hay un objeto enemigo y tres instancias de ese objeto, cada instancia posee su propia id distinta y única. Cuando haces click para indicar a qué enemigo atacar, debes usar la id de la instancia sobre la cual está el puntero del ratón. Eso haría que se atacara individualmente (por instancia) en lugar de globalmente (por objeto)
y tendria que crear las variables necesarias para cada enemigo?
por que lo que quiero es que el P1 pueda atacar al id01 triangulo, id02 triangulo, id03 triangulo etc..
No, eso es lo bueno. Cada instancia tiene las variables definidas de acuerdo al objeto enemigo, es decir, si en el objeto enemigo creaste una variable vida, cda instancia del objeto enemigo al ser creada tiene automaticamente su variable vida, pero esta variable es independiente de las otras.
Para conocer la id de la instancia bajo el mouse puedes usar la función en el evento de click del ratón
id_enemigo = instance_position(mouse_x, mouse_y,obj_enemigo)
De esta manera, si al hacer click hay un enemigo bajo el puntero, su id se guarda en la variable id_enemigo. Después de saber la id de un enemigo, usas esa id para referirte a ese enemigo en particular, or ejemplo para
quitarle vida
id_enemigo.vida -= 5
que el jugador vaya hacia el enemigo
move_towards_point(id_enemigo.x, id_enemigo.y, 4)
hice todo como debia y aun no puedo hacer que el personaje se mueva... no se que estoy haciendo mal con el move towrads
les dejo mi archivo GM para que lo vean, no es el original, solo tiene las partes necesarias para que vean lo que necesito
https://www.dropbox.com/sh/tzkeydnlvjt6137/ya52JVhzHG
hay que poner "candados" a la selección con el ratón, es decir, diferenciar si lo que se elige es una bala o es un enemigo, y además hacer que no se pueda seleccionar un enemigo sin antes haber seleccionado una bala.
Usé objetos padre en el ejemplo, porque así las colisiones se controlan de manera más sencilla.
Muchas gracias Penumbra!!!! enserio!!! muchisismas gracias!!!!!!!!
es justamente lo que buscaba!!! si pudiera darte puntos o algo lo haria!
muchas gracias encerio!!!! :D
pronto publicare mi juego por aqui
no me habia dado cuenta, pero tengo un pequeño inconveniente a la hora de seleccionar el proyectil y es que cuando lo selecciono, no puedo cambiarlo por otro proyectil (es necesario esto porque cada proyectil hara cierto daño al objeto "parentenemy")
ya lo intente con todo lo posible, lo que se me ocurrio fue hacer que se reseteara la id del proyectil (proyectil = 0) pero eso solo hacia que pareciera como si nunca hubiese escogido ni uno...
tambien utilize la variable blanco = 0 pero eso hacia que el proyectil NO SE DESTRUYERA cuando colisionaba conun obj_parentenemy.
despues se me ocurrio usar el IF
if (proyectil > 1000)
proyectil = instance position (x,y,obj)
tambien utilize el if not
if not (proyectil < 1000) and (blanco < 1000)
proyectil = instance position (x,y,obj)
pero tampoco funciono...
trate de cambiar el codigo en varios pasos (en el global left, en el step, en el parentenemy) y nada mas no pude...
este es el codigo del global left button que yo creo es donde deberia de estar el cambio porque es el que le da las ID a las instancias al hacerle click, el problema es que no resetea la ID del parentPLlayer hasta que sea destruido y eso no me deja cambiar de proyectil (supongamos que escojo el proyectil uno que causa 1 de daño y lo quiero cambiar al proyectil 2 que causa 2 de daño)
//Un proyectil se elige antes que el blanco, por eso nos aseguramos que no haya un blanco elegido
if (blanco < 1000) and (proyectil < 1000)
proyectil = instance_position(mouse_x, mouse_y, obj_parentPlayer)
explosion = 0
//Para elegir una blanco, nos aseguramos que primero se haya elegido un proyectil
if (proyectil > 1000) {
blanco = instance_position(mouse_x, mouse_y, obj_parentEnemy)
xx = blanco.x
yy = blanco.y
}
/*
la id de cualquier instancia es un numero mayor o igual a 100000, preguntar si un número es menor a esa cantidad es preguntar si existe una instancia