Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [Solucionado] Confrontaciones de movimiento  (Leído 784 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
en: Junio 13, 2017, 07:46:23 pm
le pongo un path a un objeto en su create, en absolute, y pongo una velocidad dertical de 4, el objeto aparece donde el path absoluto y no obedece la orden del vspeed... Supongo, el absoluto es el que estorba aqui... ok, lo quito... pero me interesa que empiece en el centro y se mantenga en el centro ok... le pongo x = room_width/2; y pruebo... pum... ahora me sale igual, en el centro de la pantalla como si tuviera el absoluto!!

POR QUÉÉÉÉ!!!??? T_____T
« última modificación: Junio 21, 2017, 11:36:31 am por kostra »

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #1 en: Junio 13, 2017, 09:47:34 pm
Puedes explicar mejor lo que intentas hacer?
Y si es posible una imagen o algo así ilustrativa

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #2 en: Junio 13, 2017, 10:08:35 pm
una cuchilla giratoria que sigue un path que empieza en el centro X, desde arriba moviéndose para abajo hasta salir del mapa por abajo.

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #3 en: Junio 13, 2017, 10:38:31 pm
Ohh, lo que debes hacer es con unas variables indicar el centro del movimiento y no usar las formas normal de los paths. Si no obtener con path_get_x();

algo así:

x = centro_x + path_get_x(path, i);
y = centro_y + path_get_y(path, i);

centro_y += v_speed;

Te dejo un adjunto con un ejemplo

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #4 en: Junio 18, 2017, 08:28:04 pm
parece que es buena tu respuesta pero me falla con el hecho de que uso de path un circuito cerrado siempre y el script que me pasaste parece que cambia de sentido al llegar al final y al volver lo mismo, pero no entiendo cómo cambiar eso, he probado tocar parametros de lo del sentido
if pos_path >= 1{sentido = false;}//Si llego al fin, que cambie el sentido
if pos_path <= 0{sentido = false;}//Si llego al principio, lo mismo
pero se estropea aun más :S

otra cosa que viene dentro de este problema, es que he de convinar eso con dibujar el mismo path también moviéndose para abajo.
lo hablo en este post: http://www.comunidadgm.org/preguntas-y-respuestas/dibujar-linea-con-path/


"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #5 en: Junio 18, 2017, 11:15:07 pm
En lugar del código donde se comprueba el sentido, debes colocarlo siguiente (no recuerdo si esos eran los nombres de las variables)
Código: [Seleccionar]
if pos_path >= 1{ pos_path = 0; }

 


Desconectado Clamud

Respuesta #6 en: Junio 19, 2017, 12:29:42 am
Para tener un path que se mueve, utilizo este método:

Evento Create
/// Iniciar

xx = x; //origen de la path en room
yy = y;

path_start( path0,2, 2,false );
// iniciar path0
// con velocidad 2
// continua al llegar al final
// posicion relativa a la instancia

Evento Step
/// Mover path

p = path_position; //guardar posicion dentro de la path
path_end(); //terminar path para mover la instancia

//mover origen de la path
xx += (keyboard_check(vk_right)-keyboard_check(vk_left))*4;
yy += (keyboard_check(vk_down)-keyboard_check(vk_up))*4;

x = xx; //mover instancia al origen de la path
y = yy;

path_start( path0,2, 2,false ); //iniciar path otra vez
path_position = p; //en la posicion que se habia quedado

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #7 en: Junio 19, 2017, 06:56:49 pm
Alex, ya conseguí el movimiento, ahora falta dibujarlo también bajando el mismo path xD

clamud, tu codigo no me sale (sí, cambié bien path0, los dos que hay xD)

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #8 en: Junio 19, 2017, 08:41:59 pm
Yo uso el siguiente codigo para dibujar los paths que tienen movimiento:

Código: [Seleccionar]
//Dibujado del path
for(var i = 0; i < path_get_number(path_0); i++){
    //Se extrae el punto actual
    px_1 = path_get_point_x(path_0, i);
    py_1 = path_get_point_y(path_0, i);
    //Se extrae el punto siguiente
    px_2 = path_get_point_x(path_0, i + 1);
    py_2 = path_get_point_y(path_0, i + 1);
    //Si el segundo punto existe
    if px_2 != 0{
        //Dibujar las lineas en base al centro
        draw_line_width(centro_x + px_1, centro_y + py_1, centro_x + px_2, centro_y + py_2, ancho_linea);
    }
}
//Dibujado de la cuchilla
draw_self();

Adicional dejo un .gmz para que veas el funcionamiento

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #9 en: Junio 19, 2017, 09:40:13 pm
vale me he liado un poco pero ya ha mejorado considerablemente, ahora baja bien, siguie bien el path PERO, me sale la x muy a la derecha, lo quisiera en el centro de la room, ya que los paths que uso empiezan en el centro.

Tengo esto..
create:
///init

path = choose(pcuchillamovil0,pcuchillamovil1,pcuchillamovil2,
pcuchillamovil3,pcuchillamovil4,pcuchillamovil5,pcuchillamovil6,
pcuchillamovil7,pcuchillamovil8,pcuchillamovil9);

pos_path = 0;
ancho_linea = 3;

centro_x = x;
centro_y = y;

v_path = 0.005;
v_speed = 4;

step:
///mover cuchilla

if pos_path >= 1{ pos_path = 0;}
pos_path += v_path;

x = centro_x + path_get_x(path, pos_path);
y = centro_y + path_get_y(path, pos_path);

centro_y += v_speed;

draw:
///dibujar path

for(var i = 0; i < path_get_number(path); i++){
    px_1 = path_get_point_x(path, i);
    py_1 = path_get_point_y(path, i);
    px_2 = path_get_point_x(path, i + 1);
    py_2 = path_get_point_y(path, i + 1)
   
    if px_2 != 0
        draw_line_width(centro_x + px_1, centro_y + py_1, centro_x + px_2, centro_y + py_2, ancho_linea);
    }

draw_self();

Igual, mientras espero respuesta aqui ando tratando de hacerlo yop :B
« última modificación: Junio 19, 2017, 09:49:40 pm por kostra »

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #10 en: Junio 19, 2017, 10:55:08 pm
Si en el editor de paths, tienes los paths hechos para que estén justamente en el centro del cuarto, solo modifica lo siguiente:

Código: [Seleccionar]
//Le quite "centro_x" a las partes donde se coloca las "X".

//Movimiento
x = path_get_x(path, pos_path);

//Dibujado
if px_2 != 0{
    draw_line_width(px_1, centro_y + py_1, px_2, centro_y + py_2, ancho_linea);
}

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #11 en: Junio 20, 2017, 02:02:53 pm
El único cambio fue, BORRAR del draw_line, todos los "centro_x" y sus respectivos "+" así como lo tienes tú, el código quedó así:
///dbujar path

for(var i = 0; i < path_get_number(path); i++){
    px_1 = path_get_point_x(path, i);
    py_1 = path_get_point_y(path, i);
    px_2 = path_get_point_x(path, i + 1);
    py_2 = path_get_point_y(path, i + 1)
   
    if px_2 != 0
        draw_line_width(px_1, centro_y + py_1, px_2, centro_y + py_2, ancho_linea);
    }

draw_self();

y hay dos errores
1- dibuja el path incompleto
2- la cuchilla sigue el path pero sigue yendo por la derecha..

imagen orientativa:

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #12 en: Junio 20, 2017, 05:26:17 pm
La cuchilla esta más a la derecha, por que no eliminaste el "centro_x + " del Event Step.
Código: [Seleccionar]
//Movimiento de la cuchilla
x = path_get_x(path, pos_path);

No me di cuenta que el path no se dibujaba cerrado  XD , de la siguiente forma debería de servir.
Código: [Seleccionar]
///dbujar path

for(var i = 0; i < path_get_number(path); i++){

    px_1 = path_get_point_x(path, i);
    py_1 = path_get_point_y(path, i);
    px_2 = path_get_point_x(path, i + 1);
    py_2 = path_get_point_y(path, i + 1);
   
    //Si el segundo punto no existe, que tome el primer punto de todo el path.
    if px_2 == 0{
        px_2 = path_get_point_x(path, 0);
        py_2 = path_get_point_y(path, 0);
    }

    draw_line_width(px_1, centro_y + py_1, px_2, centro_y + py_2, ancho_linea);
}

Editado, según yo solo faltaba un "}"
« última modificación: Junio 20, 2017, 08:33:57 pm por Alesxanderk »

 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2524
  • Mensajes: 2.076
  • Agradecido: 105 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #13 en: Junio 20, 2017, 06:20:51 pm
ahora siempre me dibuja una sola linea, en tu codigo falta un }  lo he puesto en los dos sitios posibles que podrían faltar

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado Alesxanderk

  • Adicto
  • *
  • Puntos: 324
  • Mensajes: 274
  • Agradecido: 1 veces
  • Sexo: Masculino
  • Señálame la meta y construiré el camino.
    • Ver Perfil
    • Game Dev Project
Respuesta #14 en: Junio 21, 2017, 12:46:07 am
Edité el mensaje anterior, también lo probé y está todo bien.