domingo, 14 de abril de 2013

Aprendendo RGSS do zero - Aula 08

Nesta aula iremos aprender a criar Scenes. Scenes são classes que possuem uma interação com o jogador, eu costumo dizer que são a alma dos jogos, a ideia delas está amplamente ligada à janelas, pois somente as janelas não fazem a interação.

- Introdução

Antes de mais nada saiba que o nome Scene é uma convenção, você pode por qualquer nome que quiser na sua classe, porém quando se põe Scene fica mais claro o que ela é.

No RGSS3 há a classe mãe Scene_Base, que facilita muito a nossa vida, pois precisamos apenas chamar os métodos básicos e não criá-los do zero.

class Scene_Teste < Scene_Base
  def start
    super
  end
end


O método obrigatório é o start, ele faz rodar toda a janela.
Chama-se uma Scene da seguinte forma:

SceneManager.call(Nome_Da_Scene)

Note que não há necessidade de por .new pois o programa se encarrega disso.
Obviamente se você chamar o script acima verá apenas uma tela preta permanente.
Vamos adicionar um comando de voltar ao pressionar ESC:

class Scene_Teste < Scene_Base
  def start
    super
  end
  def update
    super
    return_scene if Input.trigger?(:B)
  end
end


Sempre que precisar checar se algo é cumprido ou algo do tipo, que será necessário repetir várias vezes, ou um valor atingir certo número, usa-se o método update.

Neste, tudo será repetido em um determinado tempo, no caso será sempre checada a condição de pressionada a tecla ESC (usa-se o símbolo :B) e chamamos e método return_scene que retorna a scene anterior.

- Adicionando uma janela

Para adicionarmos uma janela usamos o método start, pois será criada apenas uma vez e não várias!

class Scene_Teste < Scene_Base
  def start
    super
    @window = Window_Teste.new(0,0,200,200)
  end
  def update
    super
    return_scene if Input.trigger?(:B)
  end
end


Agora vamos adicionar um método para apagar a janela quando sairmos da Scene.

class Scene_Teste < Scene_Base
  def start
    super
    @window = Window_Teste.new(0,0,200,200)
  end
  def update
    super
    return_scene if Input.trigger?(:B)
  end
  def terminate
    super
    @window.dispose
  end
end


Este método é chamado terminate. O comando dispose é o que apaga a janela.

Por enquanto é isso, na próxima aula vamos usar um exemplo envolvendo tudo que aprendemos nas últimas aulas!

Nenhum comentário:

Postar um comentário