Como Controlar um Personagem no Unity 2018

Aprenda criar o Controle de Movimentação e Animações do seu personagem e implementar o Joystick Virtual no Unity 2018.

4.00 (6 reviews)
Udemy
platform
Português
language
Game Development
category
instructor
Como Controlar um Personagem no Unity 2018
227
students
2 hours
content
Feb 2024
last update
$19.99
regular price

What you will learn

Conhecer todo o processo para se programar a Movimentação Completa de um personagem em 3D dentro do Unity Editor.

Conhecer todas as Principais Ferramentas de Animação para criar o controle de um personagem.

Programar os Controles pelas Setas do Teclado ou Joystick Virtual para mobile.

Why take this course?

Se você está estudando o desenvolvimento de games 3D, e deseja saber como fazer a programação completa de um personagem se movimentando no game, para utilizar em jogos de aventura ou terceira pessoa, você deve seriamente assistir as aulas deste curso.


Nesta sequencia eu mostro todo o processo para se exportar um Personagem 3D do 3D Studio Max para o Unity e programar todo o set de animações, movimentos e controle do personagem dentro do Unity para que ele funcione em um Jogo de Aventura ou Plataforma em 3D.


Através destas aulas você vai entender a fundo as principais ferramentas necessárias para fazer o personagem se movimentar, correr pular e disparar ações e animações.

  • Animation Controller

  • Trabalhar com Clipes de Animação

  • Controlar as Animações por Script

  • Utilizar o Character Controller para Movimentar o Personagem

  • Normalizar as Direções do Controle para Jogos de Aventura ou Mobile

  • Implementar o Joystick Virtual no Unity 2018


Através deste material, você vai adquirir o conhecimento de criar um personagem e portá-lo perfeitamente para dentro do seu Game 3D de Plataforma ou Aventura feito com o Unity 2018.


Professor e Criador de Jogos e Aplicativos


Desde 2002 atuando na área de Desenvolvimento de Software e Educação.

Já trabalhei na Universidade de São Paulo, TV Cultura e lecionei na escola Cadritech por 9 anos, onde ensinei mais de mil alunos a usar o 3D Studio Max.

Tenho meus projetos de Games e Aplicativos como o Futmania, Segredos da Floresta e os Cursos onLine do Felpudo!

Criei em 2016 a Geek Academy, primeiro portal de cursos de programação a baixo custo (36 reais na época).

Hoje além de ensinar através dos cursos online, tenho minha escola em São Paulo, a Academia Geek!

Acredito que Educação e Tecnologia podem transformar vidas e países em potencial como o Brasil.

Screenshots

Como Controlar um Personagem no Unity 2018 - Screenshot_01Como Controlar um Personagem no Unity 2018 - Screenshot_02Como Controlar um Personagem no Unity 2018 - Screenshot_03Como Controlar um Personagem no Unity 2018 - Screenshot_04

Reviews

Lucas
November 10, 2023
Foi o primeiro que explicou bem como movimentar o personagem com CharacterController de forma correta, porém em alguns pontos no geral do curso me decepcionou. Ao implementar o pulo por exemplo até a parte que foi feita a gravidade ficou ótimo, porém após fazer efetivamente o personagem pular, foi usado o isGrounded que marca sempre como false e pra "resolver" isso (pra não dizer tapar o sol com a peneira...) você decidiu colocar um quicar (que na realidade causou outro problema...) que fica decrementando o eixo Y, se fizer um cenário onde o player possa descer de um local alto o player parece estar teleportando pra baixo de tão rápido que ele desce pq o Y fica decrementando infinitamente atrapalhando a gravidade, percebi isso pq se tirar esse (tapa furo) valor de quicar no chão, o vetor que faz pular não zera e ele fica pulando consecutivamente sem parar. Na real ensinou errado essa parte, o correto seria usar OnControllerColliderHit para validar o toque no chão, Pois esse sim valida o toque no chão do componente CharacterController, e nessa colisão zerar o vetor de pulo, assim a gravidade fica funcionando corretamente e a função de quicar você faz separadamente se quiser. Esses detalhes me decepcionaram muito pois não parece dominar o assunto e acaba ensinando quem não sabe oun que está começando a fazer errado. Achei até que fosse meu script que estava com problema pois mudei o nome de algumas variáveis e otimizei o cód pra não ficar repetindo várias vezes o mesmo input em vários locais, tipo uma vez pra fazer a ação e outra pra rodar a animação. acho desnecessário. Mas então testei o cód dos arquivos do curso e teve exatamente os mesmos problemas. Se fosse um curso pago certamente eu pediria o dinheiro de volta, mesmo assim gostaria de parabenizá-lo por ter sido a única pessoa a ensinar uma movimentação básica apenas com CharacterController com gravidade programada em vez de misturar Rigidbody com CharacterController ou movimentar apenas com Rigidbody, todos que vi misturarem os dois ou movimentar com Rigidbody sempre misturavam os dois como "forma de resolver" (gambiarra que depois dava dor de cabeça pra deixar direitinho). Outra coisa que achei chato foi a parte da explicação da movimentação normalizada, pois não deu pra entender nada. Sei que o intuito era mostrar o negócio funcionando e dar o cód pronto, mas acredito que dar o peixe não ensina a pescar. Já a parte do Joystick achei boa, mas eu faria na forma do Joystick passar os valores para uma variável e usaria ela pra movimentar, assim otimizaria o código e repetiria menos vezes alguns comandos. Vou compartilhar aqui o cód não normalizado e comentado da movimentação pra quem quiser esclarecer ou entender melhor o que estou falando. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Script_PlayerCtrlr : MonoBehaviour { //VARIAVEIS private Animator PlayerAnimator; private CharacterController CharCtrlr; [Tooltip("Velocidade de caminhar")] public float VelWalk; [Tooltip("Velocidade de correr")] public float VelRun; [Tooltip("Velocidade de rotacionar")] public float VelRot; [Tooltip("Força do pulo")] public float Jump; private float VelocityCtrlr; //controla a velocidade que o player está andando (caminhar ou correr) private float InputForward; //recebe o input para andar para frente e para trás private float InputRotate; //recebe o input para rotacionar //variaveis que recebem os inputs nos vetores para cada ação separada [SerializeField] private Vector3 PlayerMovement, PlayerRotation, VectorJump; // Start is called before the first frame update void Start() { PlayerAnimator = GetComponent<Animator>(); CharCtrlr = GetComponent<CharacterController>(); } // Update is called once per frame void Update() { InputMovements(); //chama a função que recebe os inputs relacionados a movimentação (mover pra frente e rotacionar) AnimationsCtrlrKeys(); //chama a função que os inputs recebidos para chamar as animações //variavel recebe o input no vetor de mover para frente no sentido +/- PlayerMovement = InputForward * transform.TransformDirection(Vector3.forward) * VelocityCtrlr; //faz o personagem mover para frente no sentido +/- CharCtrlr.Move(PlayerMovement * Time.deltaTime); //faz o personagem rotacionar em Y no sentido +/- transform.Rotate(new Vector3(0, InputRotate * VelRot * Time.deltaTime, 0)); //faz a gravidade CharCtrlr.SimpleMove(Physics.gravity); //chama o função de pular InputJump(); } void InputJump() { //recebe o comando de pular if (Input.GetButton("Jump") && CharCtrlr.isGrounded ) { //se apertou o botão de pulo e estiver no chão VectorJump.y = Jump; //aplica a força para subir } //faz a ação de pular CharCtrlr.Move(VectorJump * Time.deltaTime); } private void OnControllerColliderHit() { VectorJump.y = 0.0f; } void InputMovements() { //recebe os inputs relacionado a movimentação InputForward = Input.GetAxis("Vertical"); //recebe o input para mover para frente no sentido +/- InputRotate = Input.GetAxis("Horizontal"); //recebe o input para rotacionar no sentido +/- PlayerRotation.y = InputRotate; //recebe variável do input de rotação no eixo Y de vetor3 de rotação } void AnimationsCtrlrKeys() { //função que recebe os inputs de movimento para animar o player if (Input.GetKey(KeyCode.LeftShift)) { //se Shift estiver apertado //insere valor do input na variavel controladora da animção de movimentar para frente no sentido +/- que está abaixo //o animator verifica o valor e deve chamar a animação de correr PlayerAnimator.SetFloat("AnimatorVel", InputForward); //insere valor da velocidade de movimento para correr na variavel controladora de velocidade VelocityCtrlr = VelRun; } else { //se Shift não estiver apertado //insere valor do input na variavel controladora da animção de movimentar para frente no sentido +/- //o animator verifica o valor e deve chamar a animação de caminhar pois o valor está dividido pela metade PlayerAnimator.SetFloat("AnimatorVel", InputForward / 2.0f); //insere valor da velocidade de movimento para caminhar na variavel controladora de velocidade VelocityCtrlr = VelWalk; } if (Input.GetButton("Jump")) { //se apertou o botão jump //insere valor 2 na variavel que controla a animação Jump PlayerAnimator.SetInteger("Jump", 2); } else { //se não apertou //insere valor 1 na variavel que controla a animação Jump PlayerAnimator.SetInteger("Jump", 1); } if (Input.GetKeyDown(KeyCode.E)) { //se apertar E //ativa a variavel de animação trigger de animação Press PlayerAnimator.SetTrigger("Press"); } if (Input.GetKeyDown(KeyCode.Q)) { //se apertou Q //ativa a variavel de animação trigger de animação Bye PlayerAnimator.SetTrigger("Bye"); } } }

Charts

Price

Como Controlar um Personagem no Unity 2018 - Price chart

Rating

Como Controlar um Personagem no Unity 2018 - Ratings chart

Enrollment distribution

Como Controlar um Personagem no Unity 2018 - Distribution chart
1984010
udemy ID
10/23/2018
course created date
11/21/2019
course indexed date
Bot
course submited by