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: Problema con plataforma circular (SOLUCIONADO)  (Leído 362 veces)

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

Desconectado LastSparkle

en: Febrero 01, 2020, 07:22:15 pm
Buenas!  :) esta es mi primera vez en el foro y ah tenido que ser por un problema que estoy teniendo para implementar una de mis plataformas móviles.

Tengo un objeto que eh logrado que siga una trayectoria circular usando lengthdir_x y lengthdir_y con sus respectivos ángulos y con su distancia marcada del centro del eje, el problema que tengo es que el movimiento de este objeto se efectúa directamente sobre sus coordenadas X e Y dependiendo del angulo que tenga con referencia al centro y necesito "pasos" osea, una medida que pueda sumársela a la hspeed y vspeed de mi jugador para que sea arrastrado junto con la plataforma, pero no se como encontrar dichas medidas dentro del movimiento, espero que puedan ayudarme  :-[
 :GMS:
« última modificación: Febrero 05, 2020, 10:37:46 pm por LastSparkle »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 en: Febrero 02, 2020, 12:51:24 am
Hola LastSparkle

Game Maker guarda las coordenadas que tenía el objeto en el Step Anterior.

Cuando cambias la "X" e "Y" de la plataforma, puedes encontrar cuántos pixeles se movió horizontalmente/verticalmente y aplicarlos al player.

Ejemplo, en el Evento que mueve tu plataforma:
//Primero calcula si el player está arriba tuyo:
var player_arriba  = false
if ( place_meeting(x,y-1,obj_player) ) { player_arriba = true } //Si la plataforma es atravezable, deberás hacer otro check.
//Ahora mueves la plataforma con el código que tengas
x = lengthdir_x bla bla
y = lengthdir_y lo mismo
//Acá la magia
var x_offset = x - xprevious //Esto calcula cuántos pixeles se movió la plataforma
var y_offset = y - yprevious
//Si el player estaba arriba de la plataforma, lo mueve también:
if ( player_arriba ) {
obj_player.x += x_offset
obj_player.y += y_offset
//Acá debes correr un código de colisión en el player para detectar si ha colisionado con algo, así evitas que el player se atasque.
//Según el resultado puedes regresar la plataforma a su posición anterior (x = xprevious) para no avanzar o botar al player de la plataforma o causarle daño al player o no mover el player, etc.
//Ejemplo, si el player colisiona, no mueve la plataforma:
var player_colisiona = false
with ( obj_player ) { if ( place_meeting(x,y,obj_wall) ) { player_colisiona = true } }
if ( player_colisiona = true ) { x = xprevious; y = yprevious; obj_player.x -= x_offset; obj_player.y += y_offset } //Esto regresa tanto a la plataforma como al player a la posición anterior.
}

Yo he llamado al player "obj_player", pero tu le pones el nombre que usaste tú

Saludos

 
Los siguientes usuarios dieron las gracias a este tema: 3dgeminis, LastSparkle


Desconectado LastSparkle

Respuesta #2 en: Febrero 03, 2020, 04:57:48 pm
oooohhhhh :OOOOO, no conocía esa variable de game maker!
gracias, y tu forma de explicarlo con la captura tambien me gusto mucho  :D