Tengo dudas sobre el motor de físicas de Game Maker, y es que no sé crear un personaje para un juego plataformas. Estuve haciendo algunas pruebas, pero no logro hacer un sistema de colision que quede bien para el personaje. Además de que el movimiento básico me cuesta configurar. Dejo adjunto el archivo donde hice las pruebas.
Este es el código de mi personaje:
CREATE
[gml]spd = 350;
jumpspd = 130;
phy_fixed_rotation = true;[/gml]
STEP
[gml]movement_normal(obj_suelo);
movement_normal(obj_cuadrado);
movement_normal(obj_circulo);
movement_normal(obj_triangulo);[/gml]
SCRIPT
[gml]//Direnccion en la que se mueve
var dir = keyboard_check(ord("D"))-keyboard_check(ord("A"));
//Detectar colision
if (position_meeting(x-14,y+33,argument0) || position_meeting(x+14,y+33,argument0)){
//Horizontal (tocando suelo)
physics_apply_force(x,y,dir*spd,0);
//Vertical (tocando suelo)
if (keyboard_check(vk_space)){
physics_apply_impulse(x,y,0,-jumpspd);
}
}
else{
//Horizontal (al no tocar suelo)
physics_apply_force(x,y,dir*spd/10,0);
}[/gml]
Y estas las propiedades de la room:
Relación píxeles/metros: 0.05
Gravedad x: 0
Gravedad y: 30
Ignoren el hecho de que el script se repite en el evento step. Simplemente lo hice así para probar las colisiones con otros objetos dinámicos. Pero al estar un script detectando una posición y otro otra posición, la fuerza se acumula y se mueve más rápido y salta más alto.
Deberias revisar este tutorial donde se explica como se manejan las colisiones:
https://www.yoyogames.com/blog/69/physics-in-gamemaker-studio-part-1
https://www.yoyogames.com/blog/70/physics-in-gamemaker-studio-part-2
https://www.yoyogames.com/blog/71/physics-in-gamemaker-studio-part-3
Espero que te sirva. https://youtu.be/iTH3Z9ta69g
Porque necesitas usar las fisicas del game maker ?
Es sólo por curiosidad :D. Sé que puede hacer cosas copadas, pero ni idea de cómo usarlas. Vi los tutoriales que me dejó Johann y entiendo mejor el tema ahora.