Blog destinado a assuntos do interesse de seu editor: Games, Música, Cinema, Informática, DeMolay, Templários e assuntos que estão em nossa atualidade.

Games: Handling of character for games in 2.5D with Unity3D

Posted by Daca On 25 de jul. de 2010 21 comentários



Semana passada comecei com dois amigos (Dayvison e Diego) da pós-graduação um grupo de estudos de programação em C# para jogos desenvolvidos na Unity3D, tal grupo possui fins acadêmicos e iniciou-se devido a necessidade de um maior estudo e conhecimento da engine por parte dos integrantes, pois todos vão utiliza-la em seus TCCs (Trabalho de Conclusão de Curso).

Para o primeiro desafio começamos com uma programação simples de um personagem em um jogo de 2.5D, onde ele realizará  dois movimentos (caminhada para ambos os sentidos no eixo x do plano cartesiano e pulo) no estilo de LittleBigPlanet. Segue abaixo um tutorial do que foi feito, junto com o resultado final.

1. Adicionamos um plane - GameObject > Create Other > Plane (Imagem 01).





2. Depois adicionamos uma plataforma para podermos realizar o pulo - Game Object > Create Other > Cube (Imagem 02).


3. Agora temos que criar o personagem, para tal selecione o mesmo gameobject da imagem anterior
4. Depois de todos os objetos estarem posicionados na cena, é necessário adicionar alguns componentes:
            Plataforma para simulação do pulo: Component > Physics > Rigidbody (neste exemplo não alteramos nenhuma de suas propriedades)
            Personagem: Component > Physics > Rigidbody (neste exemplo não alteramos nenhuma de suas propriedades), além do Rigidbody foi adicionado um Character Controller - Component > Physics > Character Controller (neste exemplo não alteramos nenhuma de suas propriedades)

Com todos os passos anteriores a cena está pronta, faltando somente fazer a codificação da movimentação e linkar tal código ao objeto correspondente.

Para codificar a Unity possui um ambiente para tal, mas não é muito amigável, portanto recomendo o Visual Studio (no caso o programa é feito em C#, mas a Unity também suporta JavaScript e Boo).

5. Clique com o botão direito na área indicada na imagem 03, após isso selecione Create > Folder, uma nova pasta com o nome New Folder será criada, no caso renomeie para Scripts, após criada a pasta clique novamente com o botão direito e selecione Create > C Sharp Script, quando criado o script aparece com o seguinte nome NewBehaviourScript no nosso caso chama-se Movement. 



6. Adicione o seguinte código:



using UnityEngine;
using System.Collections;

public class Movement : MonoBehaviour {

public float speed = 10f;
public float jump = 11f;
public float gravity = 20f;
public float mass = 1f;

public Vector3 moveDirection = Vector3.zero;
public CharacterController controller;
    
void FixedUpdate () {

controller = this.GetComponent<CharacterController>();



if(controller.isGrounded)

{
       moveDirection.x = speed * Input.GetAxis("Horizontal");
if (Input.GetButton("Jump"))
{
                  moveDirection.y = jump;
}

}
else
{
moveDirection.y -= gravity * mass * Time.deltaTime;
}

controller.Move(moveDirection * Time.deltaTime);

}
}


*** Documentação da Unity3D com explicação de tudo que pertence a engine e foi utilizado no desenvolvimento deste projeto.

*** Download do projeto.

 Qualquer dúvida ou sugestão para próximos tutoriais utilizando a Unity3D é só deixar um comentário.

Abraços,
Felipe Dacal