Hola!
Quisiera saber como hacer para que en mi juego de plataforma, el personaje no pueda retroceder en el escenario por donde ya pasó (como por ejemplo en Mario Bros)..
Gracias.
Podrías hacer que haya un objeto "Camara" que al siguiese la cámara y que:
if(Jugador.x>Camara.x) Camara.x=Jugador.x
Cita de: Marth en Enero 23, 2015, 10:51:48 PM
Podrías hacer que haya un objeto "Camara" que al siguiese la cámara y que:
if(Jugador.x>Camara.x) Camara.x=Jugador.x
Sirve en lo que respecta a la cámara, pero no evita que el jugador pueda retroceder por el escenario, aunque la cámara no lo siga.. Ese es el problema :C
Pues usa un evento outside view al que pondras una instrucción como:
x=xprevious
Cita de: Marth en Enero 24, 2015, 03:23:04 PM
Pues usa un evento outside view al que pondras una instrucción como:
x=xprevious
Tiene sentido.. Pero no surte efecto.
Es dificil resistirse a game maker XD, bueno, aparte de eso, aqui te ayudo:
[gml]if bbox_left < view_xview then x=view_xview+sprite_xoffset //para evitar que salgas del lado izquierdo del view
if bbox_right > view_xview+view_wview then x=view_xview+view_wview-sprite_width+sprite_xoffset //para evitar que salgas del lado derecho del view
if view_xview < x-view_wview/2 then view_xview=min(x-view_wview/2,room_width-view_wview) //para mover el view (obviamente en una sola direccion)[/gml]
EDIT: Acordate de poner estos valores a cero en la view:
(http://s21.postimg.org/9u6mkvw5z/zero.png)
[gml]if bbox_left < view_xview then x+=view_xview-bbox_left //para evitar que salgas del lado izquierdo del view
if bbox_right > view_xview+view_wview then x+=view_xview-bbox_right //para evitar que salgas del lado derecho del view
if view_xview < bbox_right-view_wview/2 then view_xview=min(bbox_right-view_wview/2,room_width-view_wview) //para mover el view (obviamente en una sola direccion)[/gml]
El codigo mejorado
Simple, solos tenes que poner un objeto que vaya controlando, es decir, creas un objeto que siga al personaje solo si la direccion DEL PERSONAJE es derecha o 1... si es -1 o izquierda, seguir= false
y en el step del objeto controlador, if obj_seguir.seguir =true { view_object[0]=obj_player} else {Creo que este es el comando para que siga al objeto ---> view_object[0]=obj_seguir} (este no se va a mover cuando el personaje vaya a la izquierda, por ende no se mueve la view)
Te dejo un ejemplo. Usa un objeto que servira de "camara", ademas el jugador no puede retroceder, "chocando" con el borde de la view.