Menu
CoddyTech

Direções

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 25 de 85.

O Unity tem nomes para as seis direções, cada uma com uma unidade de comprimento:

  • Vector3.right (1, 0, 0) e Vector3.left (-1, 0, 0)
  • Vector3.up (0, 1, 0) e Vector3.down (0, -1, 0)
  • Vector3.forward (0, 0, 1) e Vector3.back (0, 0, -1)

Também existem Vector3.zero (0, 0, 0) e Vector3.one (1, 1, 1). Como cada direção tem uma unidade de comprimento, uma direção multiplicada por uma velocidade resulta em um movimento exatamente igual a essa velocidade. Este caracol se afasta da câmera a 0.5 unidades por segundo:

public float speed = 0.5f;

void Update()
{
    transform.position += Vector3.forward * speed * Time.deltaTime;
}

Esse é o mesmo movimento que new Vector3(0, 0, speed * Time.deltaTime), mas a direção é mais fácil de ler e é mais difícil colocá-la no eixo errado. Um sinal de menos inverte uma direção: -Vector3.forward é Vector3.back. Essas direções pertencem ao mundo, não ao objeto: Vector3.forward corresponde ao eixo z do mundo mesmo quando o caracol está virado para o outro lado. Na próxima lição, os objetos se moverão na direção para a qual estão voltados.

challenge icon

Desafio

Fácil

Controle o gancho do guindaste com as quatro setas, usando as direções nomeadas do Unity.

  1. Em Update(), escreva um if em Input.GetKey para cada tecla de seta.
  2. Cada um adiciona sua direção multiplicada por speed * Time.deltaTime: Vector3.right, Vector3.left, Vector3.up ou Vector3.down, como em transform.position += Vector3.up * speed * Time.deltaTime;.

Pressione “Jogar” e controle o gancho: ele desliza, sobe e desce. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Hook : MonoBehaviour
{
    public float speed = 2f;

    void Update()
    {
        // Setas para a direita/esquerda: deslizam ao longo de x. Setas para cima/baixo: sobem e descem.
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity