Unity - Script de movimento básico
Nesta lição, escreveremos o código que faz um gameObject mover para cima, para baixo, para a esquerda e para a direita com base na entrada do usuário. Isso deve nos ajudar a entender o fluxo de trabalho de script do Unity com mais facilidade.
Lembre-se de que cada GameObject tem pelo menos um componente - Transform. O que é especial é que a Transform de um gameObject também aparece como variáveis no lado de script do Unity para que possamos modificá-la via código. Isso também não está restrito ao Transform; todos os componentes no Unity têm propriedades, que são acessíveis por meio de variáveis no script.
Vamos começar com nosso script de movimento. Crie um novo script com o nome “Movimento”.
Agora, abra o script e você deverá ver as mesmas coisas que viu na última lição.
Vamos criar uma variável flutuante pública chamada speed. Fazendo uma variávelpublic no Unity tem uma grande vantagem -
A variável é exibida como um campo modificável dentro do editor, então você não precisa ajustar manualmente os valores no código.
public class Movement : MonoBehaviour {
public float speed;
}
Se salvarmos este script sem tocar nos outros métodos, ele deve ser compilado no Unity.
(Você pode ver quando ele está compilando pelo
Próximo, drag and dropo script dos Ativos para o GameObject. Se você fizer isso corretamente, é isso que você deve ver nas propriedades do GameObject -
Como o valor da velocidade é ajustável e não precisa ser alterado no código o tempo todo, podemos usar o método update () em vez de start ().
Vamos agora considerar os objetivos do método de atualização -
Verifique a entrada do usuário.
Se houver uma entrada do usuário, leia as instruções de entrada.
Altere os valores de posição da transformação do objeto com base em sua velocidade e direção. Para fazer isso, adicionaremos o seguinte código -
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
gameObject.transform.position = new Vector2 (transform.position.x + (h * speed),
transform.position.y + (v * speed));
Vamos agora discutir o código em breif.
Primeiro de tudo, fazemos uma variável de ponto flutuante chamada h (para horizontal), e seu valor é dado pelo Input.GetAxisRawmétodo. Este método retorna -1, 0 ou 1 dependendo de qual tecla o jogador pressionou nas setas para cima / para baixo / esquerda / direita.
A classe Input é responsável por obter informações do usuário na forma de pressionamento de teclas, entrada do mouse, entrada do controlador e assim por diante. O método GetAxisRaw é um pouco mais difícil de entender, portanto, voltaremos a ele mais tarde.
A seguir, nós somos updating a posição do nosso gameObject para uma nova posição definida pela criação de um novo Vector2. O Vector2 usa 2 parâmetros, que são seusx and yvalores respectivamente. Para o valor x, fornecemos a soma dascurrent posição e seu speed, adicionando efetivamente alguma quantidade a cada quadro em que a tecla é pressionada.
Salve este script e volte para o Unity. O Unity atualizará automaticamente todos os scripts assim que for compilado com sucesso, então você não precisa reconectar o script novamente.
Agora que você terminou, altere o valor do speednas propriedades do GameObject para dizer 0,8. Isso é importante porque um valor mais alto fará o jogador se mover muito rápido.
Agora clique Play e veja seu primeiro pequeno jogo em ação!
Tente pressionar as setas do teclado e se mover. Para parar o jogo, simplesmente pressione Play novamente. Você pode até ajustar a velocidade em tempo real para não ter que parar e iniciar o tempo todo.
Na próxima lição, aprenderemos sobre corpos rígidos e colisões.