Você é novo no Unity? Procurando aprender como receber entradas de jogadores e mover personagens pela tela? Criamos este guia para mostrar três maneiras diferentes de controlar o movimento do jogador no Unity.
Se você é novo em codificação ou tem alguma experiência em seu currículo, este tutorial em C# o colocará em pé e seus personagens nos deles.
Vamos começar.
Movimento do jogador na unidade: coletando entradas
Antes de mais nada, você precisa saber como capturar entradas do usuário e transformá-las em movimento no jogo. O Unity torna isso muito fácil, desde que você saiba onde procurar.
Com o Unity aberto, clique em Editar na barra de ferramentas superior. Agora selecione Configurações do projeto. Na lista à esquerda, escolha Gerenciador de entrada. Selecionar Machados, preenchendo a lista de valores de entrada. Você vai querer olhar Horizontal e Vertical para movimentos básicos.
Você usará esses eixos junto com Entrada. GetAxisRaw(); para o movimento básico na próxima seção.
Movimento do jogador na unidade usando um corpo rígido e um Collider
Agora que você conhece os nomes dos eixos, pode usá-los para controlar o movimento do jogador.
No seu projeto do Unity Hierarquia visualizar, clique com o botão direito do mouse e selecione Objeto 3D > Cápsula para criar o que você vai conceder movimento. Certifique-se de usar a mesma tática para criar um terreno Plano para a sua cápsula ficar em pé.
Certifique-se de redefinir o Transformar valor de ambos os objetos e mova sua Cápsula para que ela fique no Plano. Renomeie sua cápsula para algo como "Jogador" para facilitar a identificação.
Relacionado: As 5 linguagens de desenvolvimento de jogos Unity: qual você deve aprender?
Clique no Jogador objeto e, no Inspetor visualizar, role para baixo até Adicionar componente. Adicionar um Corpo rígidoe, em seguida, adicione outro componente como um Colisor de Cápsulas desta vez. Você precisará desses componentes para adicionar física e, portanto, movimento, ao seu Jogador.
Em seguida, clique com o botão direito em seu Scripts pasta e Crio uma nova Script C#. Nomeie este script como algo como "PlayerMovement". Se você planeja adicionar vários tipos de movimento para diferentes personagens ou tipos de controle, você vai querer criar muitos scripts diferentes para cada tipo de movimento. Por enquanto, vamos nos concentrar no básico e usar um script.
Veja também: O que é programação modular no Unity e por que é importante?
Clique duas vezes no seu script para abri-lo. Você será recebido com um script padrão do Unity:
usando Sistema. Coleções;
usando Sistema. Coleções. Genérico;
usando UnityEngine;
classe pública PlayerMovement: MonoBehaviour
{
// Start é chamado antes da atualização do primeiro quadro
void Iniciar()
{}
// Update é chamado uma vez por frame
void Atualizar()
{
}
}
Você pode excluir usando Sistema. Coleções; e usandoSistema. Coleções. Genérico; pois eles não são necessários para este script.
Com isso fora do caminho, concentre-se em
public class PlayerMovement: MonoBehaviour {
por enquanto. Dentro da chave de abertura, crie uma carro alegórico variável nomeada Rapidez ou algo semelhante. este Rapidez variável é um multiplicador que controlará a rapidez com que nosso Jogador se move depois de um pouco mais de programação. Por enquanto, defina Rapidez igual a algo como 10f.
Você também precisa deixar Unity que há um Rigidbody para manipular neste script. Isso é feito com a palavra-chave Corpo rígido e um nome de variável - vamos escolher rb.
classe pública PlayerMovement: MonoBehaviour
{
velocidade de flutuação pública = 10f; //Controla o multiplicador de velocidade
Corpo rígido rb; //Informa ao script que existe um corpo rígido, podemos usar a variável rb para referenciá-lo em outro script
Isso é tudo que você precisa adicionar nesta seção. Agora, passe para void Iniciar(). Ao iniciar o jogo, você precisa definir o rb variável igual a Corpo rígido no Jogador igual a:
void Iniciar()
{
rb = GetComponent(); //rb é igual ao corpo rígido no player
}
Agora, dê uma olhada no void Atualizar() função. Esta é a função que você usará para constantemente pegar entradas dos teclados dos jogadores, controladores, etc. Lembre-se quando você verificou o Configurações do projeto para Eixos de entrada? Você vai usá-los aqui.
void Atualizar()
{
float xMove = Entrada. GetAxisRaw("Horizontal"); // chave d muda o valor para 1, uma chave muda o valor para -1
float zMove = Entrada. GetAxisRaw("Vertical"); // a chave w muda o valor para 1, a chave s muda o valor para -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocidade; // Cria velocidade na direção do valor igual ao pressionamento de tecla (WASD). rb.velocity.y lida com queda + salto definindo a velocidade para y.
}
Não se preocupe se estiver se sentindo sobrecarregado com o salto no código; vamos explicar passo a passo. Primeiro, crie um flutuador variável com um nome como xMover, e igualar a Entrada. GetAxisRaw("Horizontal");
Entrada. GetAxisRaw(); é a maneira do Unity de gravar as entradas do Player do Machados você encontrou no Configurações do projeto. Você pode ler mais sobre isso em Documentação oficial da Unity. "Horizontal" vem de Eixo horizontal nome na unidade. Este eixo controla o movimento para a esquerda e para a direita com as teclas "a" e "d".
Como você provavelmente pode adivinhar agora, float zMove = Entrada. GetAxisRaw("Vertical");
faz a mesma coisa, mas para as teclas "w" e "s".
Relacionado: Os melhores tutoriais 3D do Unity para iniciantes
A seguir, você colocará isso Rapidez variável que você criou em jogo e complete a peça final do quebra-cabeça para o movimento do jogador no Unity.
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocidade; // Cria velocidade na direção do valor igual ao pressionamento de tecla (WASD). rb.velocity.y lida com queda + salto definindo a velocidade para y.
Volte para o Unity's Inspetor vista para o Jogador objeto. Dê uma olhada no Corpo rígido-sob Informações, você verá um valor Velocidade. Este é o valor com o qual você está segmentando rb.velocity.
new Vector3(xMove, rb.velocity.y, zMove) * velocidade, cria um novo vetor com os valores x, y e z fornecidos e, em seguida, multiplica o valor do vetor por Rapidez.
Certifique-se de arrastar o Movimento do Jogador roteiro para o Jogador objeto no Unity, e pronto! Ao todo, você tem um script C# funcional que recebe entradas do jogador e as transforma em movimento de personagem no Unity.
Aqui está o código finalizado:
usando UnityEngine;
classe pública PlayerMovement: MonoBehaviour
{
velocidade de flutuação pública = 10f; //Controla o multiplicador de velocidade
Corpo rígido rb; //Informa ao script que existe um corpo rígido, podemos usar a variável rb para referenciá-lo em outro script// Start é chamado antes da atualização do primeiro quadro
void Iniciar()
{
rb = GetComponent(); //rb é igual ao corpo rígido no player
}// Update é chamado uma vez por frame
void Atualizar()
{
float xMove = Entrada. GetAxisRaw("Horizontal"); // chave d muda o valor para 1, uma chave muda o valor para -1
float zMove = Entrada. GetAxisRaw("Vertical"); // a chave w muda o valor para 1, a chave s muda o valor para -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocidade; // Cria velocidade na direção do valor igual ao pressionamento de tecla (WASD). rb.velocity.y lida com queda + salto definindo a velocidade para y.
}
}
Observação: Se você encontrar seu personagem fazendo mais flops do que qualquer outra coisa, certifique-se de travar a rotação do jogador no Inspetor.
Aprenda e ganhe mais no Unity
Agora que você sabe como programar o movimento do jogador no Unity com os componentes Rigidbody e Collider, o que você aprenderá a seguir? Talvez expandir seu controlador de movimento para adicionar coisas como deslizamento, salto duplo e muito mais seja divertido e envolvente.
O Unity Learn está repleto de tópicos interessantes para aprimorar seu conjunto de habilidades de desenvolvimento de jogos. Acreditamos que um dos fatores mais importantes para expandir seu conhecimento de programação é aprender algo novo todos os dias. Fique curioso e feliz hacking!
Quer começar a desenvolver seus próprios jogos? O Unity Learn é a melhor e mais fácil maneira de aprender e dominar o que você precisa saber.
Leia a seguir
- Programação
- Desenvolvimento de jogos
- Unidade
- Programação
Marcus é jornalista de tecnologia freelance e editor júnior de programação na MUO. Ele é um aprendiz ao longo da vida, desenvolvedor de front-end por hobby e escritor de contos com mais de 3 anos de experiência no desenvolvimento de prosa que mantém os leitores informados.
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar