Hola a todos, makeros.
el problema es que no se como hacer una colision lateral, que sea, del mismo tipo que la de ir adelante/atras :(
Les agradeceria que me ayudasen con este codigo que hice en el evento STEP del personaje
if (keyboard_check(ord('W'))){
if (point_distance(x,y,mouse_x,mouse_y) <= 32){ exit; }
if not(collision_rectangle((x+cos(degtorad(direction))*3)+16,y-16,(x+cos(degtorad(direction))*3)-16,y+16,obj_wall,0,0)){
x +=cos(degtorad(direction))*3;
}
if not(collision_rectangle(x-16,(y-sin(degtorad(direction))*3)+16,x+16,(y-sin(degtorad(direction))*3)-16,obj_wall,0,0)){
y -=sin(degtorad(direction))*3;
}
}
if (keyboard_check(ord('S'))){
if not(collision_rectangle((x-cos(degtorad(direction))*3)+16,y-16,(x-cos(degtorad(direction))*3)-16,y+16,obj_wall,0,0)){
x -=cos(degtorad(direction))*3;
}
if not(collision_rectangle(x-16,(y+sin(degtorad(direction))*3)+16,x+16,(y+sin(degtorad(direction))*3)-16,obj_wall,0,0)){
y +=sin(degtorad(direction))*3;
}
}
if (keyboard_check(ord('A'))){
if not(collision_rectangle((x+cos(degtorad(direction))*3)-16,y+16,(x+cos(degtorad(direction))*3)+16,y-16,obj_wall,0,0)){
x +=cos(degtorad(direction+90))*3;
}
if not(collision_rectangle(x-16,(y-sin(degtorad(direction))*3)+16,x-16,(y-sin(degtorad(direction))*3)-16,obj_wall,0,0)){
y -=sin(degtorad(direction+90))*3;
}
}
if (keyboard_check(ord('D'))){
if not(collision_rectangle((x-cos(degtorad(direction))*3)-16,y+16,(x-cos(degtorad(direction))*3)+16,y-16,obj_wall,0,0)){
x -=cos(degtorad(direction+90))*3;
}
if not(collision_rectangle(x-16,(y+sin(degtorad(direction))*3)+16,x-16,(y+sin(degtorad(direction))*3)-16,obj_wall,0,0)){
y +=sin(degtorad(direction+90))*3;
}
}
es el codigo del movimiento del personaje. tiene su fricción acia adelante y atras pero no consigo entender como hacer que sea la misma friccion cuando el personaje se desplaza lateralmente :( si alguien me pudiese ayudar se lo agradeceria mucho :D
por cierto en el evento END STEP puse esto que es la variable direction:
direction = point_direction(x,y,mouse_x,mouse_y);
image_angle = direction;
Gracias de antemano, salu2 :)
PD: se me olvido decirles que el sprite del jugador es un circulo de 32x32 mirando a la derecha y hay un objeto 'obj_wall' que es un muro de 32x32 con la casilla 'solid' Activada xD. Tanto el sprite del jugador como el del muro tienen desactivadas las 2 casillas que hay en el apartado 'collision checking' en la edicion de los sprites. Ahora si, es todo :D BB
Fijate en este ejemplo que hice hace un tiempo :
http://www.comunidadgm.org/index.php?action=dlattach;topic=14651.0;attach=8486
gracias jeje, pero necesito que el personaje se mueva en la dirección en la que esta el ratón, no sé como hacerlo :(. Sin embargo como pienso hacer un sistema de configuración de control guardare ese código como esta pero con otras velocidades :)
Te dejo un nuevo ejemplo de tu version corregida, espero que te sirva. Como opinion personal ese sistema de control no es muy bueno, me recuerda al del resident evil :'(
Pienso implementar los dos jeje, ya que ese que te digo me gusto mucho y el otro es el preferido de la mayoria :)
gracias por la ayuda aun que da un error y es que, al ir hacia atrás, el personaje deja de mirar al ratón, se vuelve loco jeje veré si lo puedo arreglar yo :) una vez mas, gracias, salu2