He estado creando un IA top down y hay algo que no me sale, como puedo hacer que cuando la variable critical_health sea true el objeto automáticamente busque obj_wall mas cercano y se cubra si es posible por ejemplo si el enemigo esta a la derecha que el objeto se cubra a la izquierda para que la bala del enemigo no le pueda alcanzar?
No tengo cómo probar ahorita los códigos pero creo que se puede hacer usando los siguientes códigos: instance_nearest, bbox_...(left,right,top,bottom), collision_rectangle, mp_potential_step.
Avísame si sabes mas o menos lo que te estoy hablando, si no para hacerte un ejemplo cuando pueda.
var a, b, c, dir;
a=instance_nearets(x,y,objEnemigo); //id del enemigo ma cercano
b=point_direction(a.x,a.y) //posicion del enemigo mas cercano.
c=(b+180 mod(360)) //dirección contraria a la del enemigo, osea para emprender la huida.
direction=dir;
dir=c speed=3;
lo demas es verificar si hay una pared en su camino, y colocarse detras. Eso lo podrias hacer verificando colision.
elvis, ¿el mod(360) es para qué?
Es un modulador es este caso al realizar la operacion matematica que le indique me devolvera el lado contrario en grados. osea la direccion contraria.
Funciona asi la relacion matematica de MOD
El operador mod devuelve el resto obtenido dividiendo sus operandos. En otras palabras, x mod y = x – (x div y) * y.
Pero ya con el b+180 no devuelve la dirección contraria sin necesidad de colocar el mod(360)?
Lo hice hace un tiempo como as dicho y en ocasiones tenia algunos errores, por ello use el mod, y funciono perfecto.
Cita de: elviskelley en Abril 20, 2013, 02:01:14 AM
var a, b, c, dir;
a=instance_nearets(x,y,objEnemigo); //id del enemigo ma cercano
b=point_direction(a.x,a.y) //posicion del enemigo mas cercano.
c=(b+180 mod(360)) //dirección contraria a la del enemigo, osea para emprender la huida.
direction=dir;
dir=c speed=3;
lo demas es verificar si hay una pared en su camino, y colocarse detras. Eso lo podrias hacer verificando colision.
elvis con este script lo que hace el objeto es ir a la dirección contraria pero yo lo que necesito es que el objeto no comience a ir a la dirección contraria si no que busque el objeto obj_wall mas cercano y se ponga detrás por ejemplo si el enemigo esta a la derecha el objeto busque el obj_wall y se ponga detrás (para que las balas del enemigo no le puedan alcanzar)