Buenas, soy nobato en gml y queria saber como escribo que "si no hai nada desde este punto hasta tal punto" para que entonces haga algo.
Pasa que estoy haciendo un juegillo de disparos y quiero ponerle una ia a cada enemigo (todos con la misma xd) y me tope con ese problema.
Quiero q cuando el enemigo esta, por ejemplo, en el mismo eje x pero en un eje y inferior en relacion a mi, me dispare, pero NO se como escribir eso, lo he intentado y no me sale (ya borre todos los scripts borradores dandome por vencido). ayuda plis.
Hola :) Seria algo asi...
if object0.x < x
{disparar= true}
o algo asi, dependiendo de que quieras hacer especificamente
Bueno, parece q no me expliqe bien.
quiero algo asi:
en el evento stepdel objeto enemigo.
if (estoy justo a la izquierda del objeto del player y no hai ningun objeto solido entre nosotros) then (la accion a realisar, la cual ya tengo... solo necesito la parte anterior)
Solo necesito lo q iria entre el if y el then
Suponiendo que el objeto sólido que PUDIERA haber entre jugador y enemigo se llamara obj_bloque:
[gml]
if ( (x - obj_jugador.x) < 0 ) and ( abs(y - obj_jugador.y) < 50 )
{
var cl;
cl = collision_line(x, y, obj_jugador.x, obj_jugador.y, obj_bloque, false, true)
if (cl == noone)
{
//accion a realizar
}
}
[/gml]
El código sólo funcionará cuando el enemigo esté a la izquierda del jugador, no a la derecha. Tampoco funcionará si enemigo y jugador están muy lejos en la coordenada y, es decir, la acción sólo se ejecuta si están más o menos emparejados en la coordenada y. Ten en cuenta que el código va en step, por lo que si la condición es verdadera, lo más probable es que la acción a realizar (por ejemplo un disparo), se va a ejecutar MUCHAS veces seguidas.
Así que debes adaptar el código (agregarle cosas o modificarlo) para que la acción sólo ocurra una vez cada, luego haya un tiempo de reposo, y luego se pueda volver a ejecutar.
EDITADO: Hice una corrección en la condición del if interior, porque la primera que puse estaba mal