Intento que el jugador gire y avance en función de su dirección actual con este código:
direction = image_angle;
if keyboard_check(vk_up) {speed = 4} else {speed = 0};
if keyboard_check(vk_down) {speed =-2} else {speed = 0};
if keyboard_check(vk_left) {image_angle +=4} else {image_angle += 0};
if keyboard_check(vk_right) {image_angle -=4} else {image_angle += 0};
El caso es que el jugador rota y camina hacia atrás, pero no hacia adelante. ¿Cómo lo soluciono? :-X
Cita de: CAPTCHA en Mayo 21, 2016, 11:54:06 PM
Intento que el jugador gire y avance en función de su dirección actual con este código:
direction = image_angle;
if keyboard_check(vk_up) {speed = 4} else {speed = 0};
if keyboard_check(vk_down) {speed =-2} else {speed = 0};
if keyboard_check(vk_left) {image_angle +=4} else {image_angle += 0};
if keyboard_check(vk_right) {image_angle -=4} else {image_angle += 0};
El caso es que el jugador rota y camina hacia atrás, pero no hacia adelante. ¿Cómo lo soluciono? :-X
El problema con eso es que como estas dando valores como esos y else, se cancelan...
Osea, fijate que se ejecutan de arriba hacia abajo, alli dice si se preciona vk_up la velocidad seria de 4, de lo contrario seria 0, el codigo de abajo dice que si presionas abajo tendra la velocidad de -2 si no lo presionas sera 0.
Ahora, el problema esta que como dije, el codigo se ejecuta de arriba hacia abajo, por lo que digamos que si presionas vk_up tendra la velocidad de 4, ahora el codigo que sigue dice que si presionas vk_down la velocidad sera -2, obviamente no lo presionaremos ya que nos moveremos hacia adelante, pero alli dice que si no lo presionas la velocidad sera de 0
Entendistes? esa fue una especie de leccion xD, aqui te doy un codigo corregido (En caso de que no vayas a hacer modificaciones)
direction = image_angle;
speed=0
if keyboard_check(vk_up) {speed = 4}
if keyboard_check(vk_down) {speed =-2}
if keyboard_check(vk_left) {image_angle +=4}
if keyboard_check(vk_right) {image_angle -=4}
Asi de simple que tienes el codigo, eso funcionaria, lo de else y image_angle+=0 no es necesario, quite los else que causaban conflicto y le puse el speed=0 a el inicio, como explique, primero se ejecutara eso, en caso de que el step anterior presionaste una tecla eso te dara la speed de 0.
Puedes utilizar:
if !keyboard_check(vk_up) and if !keyboard_check(vk_down) speed=0
El signo de exclamacion "!" antes de el keyboard y despues de el "if" hace lo contrario de el codigo, si checkeaba si lo estabas presionando esta vez checkeara de que no lo estas presionando, osea, si no estas presionando ninguna de esas teclas la velocidad sera 0 :D
Avisa comot e resulto :P