Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: somnus en Mayo 17, 2022, 08:30:17 PM

Título: como hacer que el objeto te siga?
Publicado por: somnus en Mayo 17, 2022, 08:30:17 PM
tengo una duda de como sera la mejor manera de implementar lo siguiente:

basicamente es que un objeto te siga, pero lo que quiero lograr es como te sigue el objeto del "option" en el juego del gradius:
https://www.youtube.com/watch?v=pjQ1_8hbp9I
en el mninuto 1:49 vienen esos objetos que menciono, son los que siguen a la nave y disparan junto con ella
Título: Re: como hacer que el objeto te siga?
Publicado por: Alemar5 en Mayo 17, 2022, 08:42:43 PM
No estoy muy seguro de a lo te refieras, pero si quieres que un objeto se acerque al jugador se me ocurre el siguiente código:

[gml]
///Evento step del objeto que quieres que te siga

if x < obj_player.x
{
x ++
}
else
if x > obj_player.x
{
x --
}

if y < obj_player.y
{
y ++
}
else
if y > obj_player.y
{
y --
}


[/gml]

de esta manera la posición del objeto se sumara o restara hasta que sea la misma que el objeto nave, puedes cambiar el ++ o --  a algo como += 0.5, para que valla mas lento o mas rapido.
Título: Re: como hacer que el objeto te siga?
Publicado por: Jeffrey Faper en Mayo 17, 2022, 10:30:05 PM
Seria algo como esto se puede hacer con arrays o ds_list no se cual sea la mejor opcion algunos dicen que ds_list es mas rapido no lo se, me gustaria saberlo...
EVENTOS GRAN LIDER OSEA SU NAVE U OBJ_JUGADOR:
[gml]
//CREATE EVENT
//ARRAY POSICIONES DE NUESTRO OBJETO LIDER
trailIndex=39; //RANGO MAXIMO DE NUESTRO ARRAY
for(var i=trailIndex-1; i>=0;  i--){
    trailx=x;
    traily=y;
}
//EVENTO STEP GRAN LIDER
//almacenar las posiciones de nuestro objeto al array
if(x!=xprevious || y!=yprevious){
    for(var i=trailIndex-1; i>0; i--){
        trailx=trailx[i-1];
        traily=traily[i-1];
        }
    trailx[0]=x;
    traily[0]=y;
    }

[/gml]
EVENTO END STEP DE NUESTRO NPC OPTIONS O COMPAÑERO :
[gml]
//CREO QUE VA EN UN END STEP EVENT
//ACTUALIZAMOS LA POSICION DE NUESTRA OPTION NPC O COMPAÑERO
x=objGRAN_LIDER.trailx[10];
y=objGRAN_LIDER.traily[10];
[/gml]
(https://i.ibb.co/VQ2T42T/20220517-180356.gif)
Este metodo funciona bien para velocidades estaticas como es el caso del juego Gradius donde solo puedes cambiar de velocidad al coger un poder y upgraderarla para juegos donde el jugador puede cambiar entre diferentes velocidades a su antojo, el npc option o compañero termina alejandose demasiado de el,  jamas pude solucionarlo asi que si alguien tiene alguna solucion favor de compartir le agradeceria mucho
Título: Re: como hacer que el objeto te siga?
Publicado por: somnus en Mayo 18, 2022, 05:34:16 PM
Cita de: Jeffrey Faper en Mayo 17, 2022, 10:30:05 PM
Seria algo como esto se puede hacer con arrays o ds_list no se cual sea la mejor opcion algunos dicen que ds_list es mas rapido no lo se, me gustaria saberlo...
EVENTOS GRAN LIDER OSEA SU NAVE U OBJ_JUGADOR:
[gml]
//CREATE EVENT
//ARRAY POSICIONES DE NUESTRO OBJETO LIDER
trailIndex=39; //RANGO MAXIMO DE NUESTRO ARRAY
for(var i=trailIndex-1; i>=0;  i--){
    trailx=x;
    traily=y;
}


interesante, voy a checar mas al respecto, algo asi es lo que busco, muchas gracias.
//EVENTO STEP GRAN LIDER
//almacenar las posiciones de nuestro objeto al array
if(x!=xprevious || y!=yprevious){
    for(var i=trailIndex-1; i>0; i--){
        trailx=trailx[i-1];
        traily=traily[i-1];
        }
    trailx[0]=x;
    traily[0]=y;
    }

[/gml]
EVENTO END STEP DE NUESTRO NPC OPTIONS O COMPAÑERO :
[gml]
//CREO QUE VA EN UN END STEP EVENT
//ACTUALIZAMOS LA POSICION DE NUESTRA OPTION NPC O COMPAÑERO
x=objGRAN_LIDER.trailx[10];
y=objGRAN_LIDER.traily[10];
[/gml]
(https://i.ibb.co/VQ2T42T/20220517-180356.gif)
Este metodo funciona bien para velocidades estaticas como es el caso del juego Gradius donde solo puedes cambiar de velocidad al coger un poder y upgraderarla para juegos donde el jugador puede cambiar entre diferentes velocidades a su antojo, el npc option o compañero termina alejandose demasiado de el,  jamas pude solucionarlo asi que si alguien tiene alguna solucion favor de compartir le agradeceria mucho