Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: BOBForevah en Marzo 19, 2016, 01:34:28 PM

Título: BUG con movimiento diagonal
Publicado por: BOBForevah en Marzo 19, 2016, 01:34:28 PM
Buenas, tengo un problema y es que al hacer que el personaje se mueva en diagonal, en ocasiones, atraviesa los objetos solidos (esta puesto en el codigo que si va recto y toca un solido no se mueva y si va en diagonal y toca un solido se mueva pegado al solido, es decir, si va hacia arriba e izquierda y toca algo arriba se mueve a la izquierda) suele pasar que al llegar a la esquina de la room (la roomm esta rodeada con solidos para limitar el espacio) la atraviesa y se sale para fuera.

No se si me he explicado bien XD pero si alguien sabe porque puede ser agradeceria la ayuda. ;D
Título: Re:BUG con movimiento diagonal
Publicado por: Clamud en Marzo 19, 2016, 03:49:55 PM
Puede ser que falten algunos ifs con condiciones para manejar esa situación.
Si sólo necesitas el deslizamiento sobre sólidos para no salir de la room, entonces el código se puede simplificar, además no es necesario poner sólidos alrededor de la room:
[gml]
if( x < (anchura/2) ) x = (anchura/2);
if( x > room_width-(anchura/2) ) x = room_width-(anchura/2);
if( y < (altura/2) ) y = (altura/2);
if( y > room_height-(altura/2) ) y = room_height-(altura/2);
[/gml]
anchura y altura son las dimensiones de la caja de colisión, y se dividen entre dos suponiendo que está centrada en la posición de la instancia.