Fala ae pessoal, eu comecei a fazer um sistema de plataforma pro meu jogo mas daí repensei e achei melhor fazer ele normal mesmo xD
O sistema está inacabado, possui alguns bugs e tal, mas coisas mínimas, também é funcional em netplay (já que fiz nele :S)
Screens? Ele só faz o carinha andar só na esquerda e direita, pular na diagonal e descer .-.
Script
Obs: Para criar plataformas onde o personagem possa andar, use o tile com bloqueio.
O sistema está inacabado, possui alguns bugs e tal, mas coisas mínimas, também é funcional em netplay (já que fiz nele :S)
Screens? Ele só faz o carinha andar só na esquerda e direita, pular na diagonal e descer .-.
Script
- Código:
#================================================================
# By Soreto
# 06/10/2012
# AVISO: Sistema incompleto!
#================================================================
module ConfigPlat
MAX_JUMP = 2
end
class Game_Player
alias srt_pl_update update
def update
srt_pl_update
last_moving = moving?
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
case Input.dir4
when 2
move_down
when 4
move_left
when 6
move_right
when 1
move_lower_left
when 3
move_lower_right
when 7
move_upper_left
when 9
move_upper_right
end
end
end
end
class Game_Character
def move_down(turn_enabled = true)
if passable?(@x, @y, 4) or passable?(@x, @y, 6)
@y += ConfigPlat::MAX_JUMP
increase_steps
else
check_event_trigger_touch(@x, @y+1)
end
end
def move_up
@y -= 2 if @y > 0
return
end
def move_left(turn_enabled = true)
if !passable?(@x, @y, 4)
turn_left
@x -= ConfigPlat::MAX_JUMP
increase_steps
else
check_event_trigger_touch(@x-1, @y)
end
end
def move_right(turn_enabled = true)
if !passable?(@x, @y, 6)
turn_right
@x += 1
increase_steps
else
check_event_trigger_touch(@x+1, @y)
end
end
def move_upper_left
unless @direction_fix
@direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
end
if (!passable?(@x, @y, 6) and !passable?(@x, @y - 1, 4)) or
(!passable?(@x, @y, 4) and !passable?(@x - 1, @y, 6))
@x -= ConfigPlat::MAX_JUMP
@y -= ConfigPlat::MAX_JUMP
increase_steps
end
end
def move_upper_right
unless @direction_fix
@direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
end
if (!passable?(@x, @y, 4) and !passable?(@x, @y - 1, 6)) or
(!passable?(@x, @y, 6) and !passable?(@x + 1, @y, 4))
@x += ConfigPlat::MAX_JUMP
@y -= ConfigPlat::MAX_JUMP
increase_steps
end
end
alias srt_up_update update
def update
srt_up_update
for i in 1...3
if passable?(@x, @y - i, 6) and !moving?
move_down
end
end
if Input.trigger?(Input::Letters["A"])
if @direction == 4
move_upper_left
elsif @direction == 6
move_upper_right
end
end
end
end
Obs: Para criar plataformas onde o personagem possa andar, use o tile com bloqueio.