Hola estoy configurando el salto y la gravedad para mi personaje.
esto es lo que tengo en el evento step:
gravity_direction=270
if place_free(x,y+1){gravity=1}
else{
gravity=0
}
if vspeed>12{speed=12}
y esto es lo que tengo en el evento collision:
if vspeed>0 and not place_free(x,y+vspeed) {move_contact_solid(270,0) vspeed=0} mi primera duda es que hace move_contact_solid ya que si no pongo un valor de 270 el personaje desaparece y segundo he probado a poner solo move_contact_solid(270,0) vspeed=0 y funciona igual, alguien me puede decir para que sirve el if si funciona igual sin el? gracias
El if esta puesto para que no hay errores, algo asi como comprobante. Porque por ejemplo si pones el sulo a otro nivel pues daria error.
Es decir, si tienes el suelo normal y haces un relieve con el mismo suelo pues daria error y funcionaria mal.
gracias, podrias explicarme que hace esto? if vspeed>0 and not place_free(x,y+vspeed) {move_contact_solid(270,0) vspeed=0} esque no lo acabo de comprender bien
if vspeed>0 and not place_free(x,y+vspeed) : Hace que si 'vspeed' (velocidad vertical) es mayor que 0 (1,2,3,etc) y la parte de abajo del objeto no esta vacia (not place_free) pues que se haga el codigo entre corchetes {}
move_contact_solid(270,0) vspeed=0 : Mueve el objeto hasta el solido de abajo (270 = abajo) y pone la velocidad vertical a 0.
Tu salto debe ser algo tipo vspeed = -11 o algo por el estilo.
vale pero si ese codigo va en el evento collision que se supone que solo se ejecutar al chocar con algo, por que hay un if que esta comprobando si tiene algo debajo todo el rato?
Porque eso se debe efectuar si colision y esta debajo el objeto, imagina que colisiona y no esta debajo (imagina que usas el mismo objeto como suelo y pared) pues mientras caes y tocas la pared pues se pararia si no tuviese el if.
En definitiva, eso lo que indica es que toque desde arriba.
vale comprendido, solo una ultima duda mas que me sa surgido xD entonces sde el vento collision puedo comprobar algo a cada step¿? como si fuera un evento step?
Eso si que no lo se muy bien, si quieres que sea a cada step prueba a poner un distance_to_object(obj_jugador) < distancia (32 un cuadrado, 0 contacto, etc).