Hola, soy nuevo y he visto que el foro esta lleno de apoyo para los desarrolladores, agradezco primeramente la atención y ahora paso a mi pregunta:
Mi juego consta de acciones tipo juego de rol, en el que un objeto de tipo guerrero posee un poder de ataque de 5 por ejemplo, el cual va a ir cambiando, lo que voy a hacer es que el objeto cree un objeto espada o algo asi y este objeto del ataque obtenga el valor de daño que debe causar y este a su vez al colisionar con otro objeto le produzca el daño haciendo calculos con defensa y esas cosas, pues bien simple y sencillamente mi duda es como puedo pasarle el valor del objeto "atacante" al objeto "ataque" y este afectar al objeto "victima" tomando en cuenta que al mismo tiempo pueden haber mas de 1 objeto "atacante", mas de un objeto "ataque"y mas de un objeto "victima" ya que sera algo asi como una batalla campal. Gracias por el apoyo.
Algo así
CREATE del jugador
[gml]
damage = 5
mi_espada = noone
[/gml]
Creamos instancia de la espada en STEP del player y le pasamos el daño según la variable de daño del jugador
[gml]
if keyboard_check_pressed(ord('A')) and (mi_espada == noone)
{
mi_espada = instance_create(x, y, obj_espada)
mi_espada.damage = damage
}
[/gml]
Evento de colisión ENEMIGO - ESPADA
[gml]
if (vulnerable)
{
vida -= other.damage - def_points //Al daño de la espada se le restan los puntos de defensa del enemigo y el resultado se resta a la vida
vulnerable = false
}
[/gml]
Y no importa si es una batalla campal, porque GM se encarga de gestionar todas las colisiones. Si a un enemigo lo atacan tres espadas a la vez, pues GM procesa tres eventos de colisión uno tras otro durante ese mismo "ciclo de trabajo"
Ok parece que si entendi el codigo, ahora como seria si no necesito yo presionar una tecla para atacar, es decir, si yo quiero que el objeto ataque automaticamente, el juego es algo asi como un RPG y un RTS, y otra cosa, lo que no entiendo y lo he visto varias veces es cuando en las variables ponen -= esto como funciona o que significa? Gracias por atenderme ;D
-= es un operador para realizar una resta "abreviada". Suponiendo que hay dos variables, y con ellas se hace una resta, los dos métodos siguientes son equivalentes
Método 1:
[gml]
var2 = var2 - var1 //A la variable 2 se le resta variable 1
[/gml]
Método 2:
[gml]
var2 -= var1 //A la variable 2 se le resta variable 1 (lo mismo, pero con menos código)
[/gml]
Si quieres que haya ataques automáticos, entonces debes crear una especie de inteligencia artificial, es decir, la instancia que va a atacar debe revisar que esté cerca de una instancia "atacable", también revisar si se puede atacar (si tiene un arma, si tiene suficiente energía, etc)
distance_to_object() devuelve la distancia a la instancia más cercana de un objeto
EDITADO: Corregí el código de STEP en el mensaje anterior, porque el nombre de la variable para el daño no era el correcto
Muy bien gracias por aclararme las dudas vere como me queda. :D