TUTORIAL 11 - CRIANDO UM EVENTO

        Neste tutorial aprenderemos como criar um evento no 3D Game Builder, um evento é o resultado de uma ação durante o jogo.

        Primeiramente crie um novo projeto ou use um anterior, em seguida crie um pequeno cenário com duas bases sólidas, pode usar dois grandes cubos, um próximo do outro, porém um mais alto que a outro para que o ator possa andar sobre o mais baixo porem não consiga subir até o outro, também posicione um cubo na extremidade em que as duas bases se unem, mas deixe-o próximo do solo para que o ator possa subir sobre ele, em seguida se você quiser pode colocar uma textura nos objetos para que eles tenham uma aparência mais bonita, quando concluir o seu cenário devera estar parecido com este:

        Nós iremos fazer uma espécie de elevador, quando o ator estiver sobre o cubo menor que será o nosso elevador este cubo ira subir levando-o até a parte superior.

      Agora que você já esta com o cenário pronto e já sabe o que pretendemos fazer selecione o cubo que representa o nosso elevador, na paleta onde são exibidas as propriedades do objeto note que existe uma outra aba chamada “Eventos” clique nela.

      Aqui são listados os eventos que podem ser criados no objeto que está selecionado, a seguir serão explicados mais detalhadamente cada um deles:

      - OnClick: Evento que ocorre quando o usuário clica sobre o objeto.
      - OnInteract: Evento que ocorre quando o usuário estiver colidindo com o objeto e pressionar uma tecla de ação, por padrão esta tecla é “Enter”, mas pode ser alterada nas propriedades do projeto.
      - OnLoop: Evento que ocorre repetidamente dês do momento em que o objeto for criado até o momento que ele for destruído.
      - OnCollision: Evento que ocorre no momento que o ator estiver colidindo com o objeto.

      Além dos eventos associados ao objeto também existem eventos associados ao mapa, para acessar estes eventos use o menu “Mapa → Eventos”, os eventos que podem ser definidos em um mapa são:

      - OnCreate: Evento que ocorre uma vez no momento em que o mapa é criado.
      - MainLoop: Evento que ocorre repetidamente dês do momento em que o mapa for criado até o momento que ele for destruído.
      - OnDestroy: Evento que ocorre uma vez no momento em que o mapa é destruído.
      - OnClick: Evento que ocorre quando o usuário efetua um clique com o mouse.
      - OnCollision: Evento global de colisões, ocorre sempre que uma colisão entre objetos ocorrer no mapa.

      Como o que nós queremos é que o elevador suba no momento em que o ator estiver colidindo com o elevador então vamos utilizar o evento “OnCollision” do objeto, clique sobre o evento “OnCollision” na paleta eventos.

      Este é o editor de eventos, aqui são criados e editados os scripts utilizados para executar ações durante o jogo. O primeiro botão acima do editor é usado para salvar o script e o segundo utilizado para verificar possíveis erros no script, antes de salvar é necessário fazer a verificação de erros, não é possível salvar scripts que possuam erros. Para facilitar a criação dos scripts durante a escrita dele é possível pressionar CTRL+ESPAÇO para que todos os comandos sejam exibidos oferecendo a possibilidade do comando ser auto completado além possibilitar visualizar todos os parâmetros recebidos pelas funções.

      A linguagem script do 3D Game Builder é baseada na linguagem de programação pascal, para saber mais sobre a linguagem leia o artigo sobre ela em http://www.eternix.com.br/pt/3dgamebuilder/scriptlanguage.php.

      Vamos criar o nosso primeiro script, como nós queremos que o cubo eleve-se até chegar a altura da outra plataforma temos que fazer uma verificação, se a posição Y do cubo já não esta na posição desejada, caso não esteja incrementamos a posição de Y. No meu caso o script ficou assim:

if GetObjectPositionY('Objeto1') < 2 then
    SetObjectPosition('Objeto1',
                      GetObjectPositionX('Objeto1'),
                      GetObjectPositionY('Objeto1')+0.01,
                      GetObjectPositionZ('Objeto1'));

      O comando “GetObjectPositionY” retorna o valor da posição no eixo Y do objeto passado a ele como parâmetro, no caso do “Objeto1”, ele é o meu elevador, verifico se ele é menor que 2 que foi valor necessário para que o meu elevador atingisse o topo da outra plataforma, se for menor então devo aumentar a altura do elevador, para isso uso o comando “SetObjectPosition“, que recebe como parâmetro o nome do objeto a ser movido, no meu caso “Objeto1”, e também recebe os valores a serem alterados em X, Y e Z, como queremos alterar apenas o valor de Y é usado o “GetObjectPositionX” para pegar novamente a posição de X do mesmo objeto para não haver alteração na posição no eixo X e é feita a mesma coisa com o eixo Z, já em Y note que é pego o ultimo valor no eixo Y com o comando “GetObjectPositionY” e incremento a ele 0.01. Isto fará com que o cubo eleve-se, porém não terá o resultado esperado, o elevador vai subir, mas o nosso personagem não, isto porque o comando “SetObjectPosition“ trabalha com objetos estáticos, isto quer dizer que objeto será movido sem nenhuma verificação de colisão, para que funciona-se desta maneira seria necessário tornar o elevador um objeto dinâmico e usar o comando “ApplyForce” para movê-lo, mas existe uma maneira mais fácil, mover juntamente com o elevador o ator, usando o mesmo comando “SetObjectPosition“ mas desta vez no objeto “Player”, o objeto “Player” é um objeto que existe dentro de todos os mapas e representar o ator principal, então o novo script ficou assim:

if GetObjectPositionY('Objeto1') < 2 then
begin
    SetObjectPosition('Objeto1',
                      GetObjectPositionX('Objeto1'),
                      GetObjectPositionY('Objeto1')+0.01,
                      GetObjectPositionZ('Objeto1'));
    SetObjectPosition('Player',
                      GetObjectPositionX('Player'),
                      GetObjectPositionY('Player')+0.01,
                      GetObjectPositionZ('Player'));
end;

      Está pronto, agora clique no segundo botão no editor de eventos para verificar se houve algum erro no script, se você fez tudo corretamente ele não encontrará nenhum erro, caso encontro, o erro será exibido abaixo do editor, se não houver nenhum erro clique em salvar no editor de script e salve também o seu mapa. Agora você pode executar o projeto e visualizar o resultado, quando o ator estiver sobre o elevador ele vai ser elevado até a segunda plataforma.

      Este foi apenas um pequeno exemplo do que é possível fazer com um script, a linguagem script do 3D Game Builder é composta por mais de 700 comandos que vão dês da manipulação de strings até a manipulação de objetos 3D, permitindo acesso a banco de dados, ao registro do windows e varias funções do sistema operacional. Nos próximos tutoriais aprenderemos a fazer outras coisas utilizando a linguagem scripts.