Noviembre 18, 2011, 12:34:22 AM Ultima modificación: Noviembre 19, 2011, 01:42:47 AM por Momfus
Hola gente de CGM, vengo esta vez con un problema que tengo con un enemigo que se mueve de forma "cuadr?tica", es decir...de esta forma:



Todo funciona joya y sin ning?n problema, la cosa es que tengo un tipo de enemigo que cada cierto tiempo (de forma aleatoria) aumenta su velocidad, cuando no hay ning?n objeto dentro del rango de su movimiento cuadrado, no pasa nada...pero sino se pone como loco y se pone a rebotar.

Puede ser poco entendible,por eso hice un ejemplo reducido con los elementos que participan en el problema (son pocos). Ahi se ve la diferencia en ciertos tipos de movimiento cuando aumenta su velocidad.

Saludos y espero que puedan ayudarme, porque sino tendr? que sacar este tipo de enemigo y ser?a una lastima. Saludos.

Link del Problema: http://www.mediafire.com/?tojw45tw653p76y

PD: Si, esta hecho casi todo en Drag & Drop, ahora utilizo mucho m?s GML pero en el momento que hice este tipo de enemigo a?n no sabia mucho del tema. Si pueden hacerlo en gml, mejor. Gracias.

Revisando tu problema...

Ya me hago la idea de que simplemente debes poner alg?n if (speed > cierta_speed) speed = mantenerla la speed
Battlefield Galactic (Nombre piloto) Alpha 1.7.5.0
Juego Genero: Multiplayer Online Battle Arena!
Is more than 9000 APM!!

haber si entendi! quieres que tu enemigo (obj) cambie su velocidad de forma aleatoria! pero solamente si el obj_player no esta dentro de su rango!  ??? que tal si usas
[gml]//distancia a pixels
if distance_to_object(obj_player) < 64
{//acciones
}[/gml]
:-[
LA PRACTICA HACE AL MAESTRO:3




Web site:DG games

Cita de: klys en Noviembre 18, 2011, 01:27:53 AM
Revisando tu problema...

Ya me hago la idea de que simplemente debes poner alg?n if (speed > cierta_speed) speed = mantenerla la speed

Nop, ese no es el problema y no lo soluciona.

Cita de: derwin gm en Noviembre 18, 2011, 02:11:47 AM
haber si entendi! quieres que tu enemigo (obj) cambie su velocidad de forma aleatoria! pero solamente si el obj_player no esta dentro de su rango!  ??? que tal si usas
[gml]//distancia a pixels
if distance_to_object(obj_player) < 64
{//acciones
}[/gml]
:-[

No, eso no es lo que busco, bajate el ejemplo que puse y vas a ver el problema que ocurra muy seguido con los que tienen bloques dentro del cuadrado de movimiento que forman

Yo no entendi cual es el problema, en ningun momento un enemigo empezo a rebotar como loco como tu dices. Pasa lo que quieres que haga, sigue su recorrido con mas velocidad

mmm... el problema es que al estar el enemigo en su rango, que pasa? es que no entend? bien el problema ni como funciona el enemigo

Y lo m?s importante, c?mo quieres que se comporte;  :-[

Trabajandom con tu "codigo" no puedo o mejor no quiero cambiarlo seria ms trabajo. lo vejor seria una variable de direccion.
la cual verifique las posibles colisiones y cambie la direccion.
a ver un ejemplo.
envent create
direccion=0;

event End step
switch(direccion)
{
case 0: direction=0; break; //derecha
case 1: direction=270; break; //abajo
case 2: direction=180; break; //isquierda
case 3: direction=90; break; //arriba
}
luego lo que haces es verificar colisiones
y cambiar el valor de la variable

Ahi cambie el link, para que se entienda mejor...los del lado derecho andan bien, los del izquierdo son los que tienen error y tienen bloques en el medio, esos son los que quiero solucionar. Tambi?n reduje el codigo para que este solo lo escencial.

Link: http://www.mediafire.com/?tojw45tw653p76y

Cita de: MaanuRP en Noviembre 18, 2011, 08:05:07 PM
Yo no entendi cual es el problema, en ningun momento un enemigo empezo a rebotar como loco como tu dices. Pasa lo que quieres que haga, sigue su recorrido con mas velocidad

Fijate cuando aumenta la velocidad. No se mueven con el movimiento de siempre, hasta cambian su trayectoria.

Cita de: knd144 en Noviembre 18, 2011, 08:23:45 PM
mmm... el problema es que al estar el enemigo en su rango, que pasa? es que no entend? bien el problema ni como funciona el enemigo

Y lo m?s importante, c?mo quieres que se comporte;  :-[

Ahi cambie el link por algo m?s entendible.

Cita de: elviskelley link=topic=16121.msg75924#msg75924date=1321648507
Trabajandom con tu "codigo" no puedo o mejor no quiero cambiarlo seria ms trabajo. lo vejor seria una variable de direccion.
la cual verifique las posibles colisiones y cambie la direccion.
a ver un ejemplo.
envent create
direccion=0;

event End step
switch(direccion)
{
case 0: direction=0; break; //derecha
case 1: direction=270; break; //abajo
case 2: direction=180; break; //isquierda
case 3: direction=90; break; //arriba
}
luego lo que haces es verificar colisiones
y cambiar el valor de la variable

Nop, agregue eso y peor..se traban.



Espero que con el nuevo ejemplo se entienda mejor.

Gente, ya lo solucione. Muchas gracias igualmente por la ayuda.

Simplemente tenia que poner "alinear" con la grilla 32x32 y listo..ya que cuando aumenta de velocidad por alguna razon aumenta el tama?o de la imagen o algo asi y colisiona con bordes que no deberia, de esta forma siempre se queda en donde tiene que estar.

GRACIAS Y SALUDOS.

PD: Borro los links igualmente, para no ocupar espacio en mi cuenta de mediafire.