Menu
CoddyTech

Espaço local e global

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

Um objeto tem suas próprias direções, além das direções do mundo. transform.forward indica para onde aponta o nariz do objeto (a seta azul na visualização Scene do Unity), como um vetor no mundo com uma unidade de comprimento; transform.right e transform.up são, respectivamente, as direções para a direita e para cima do próprio objeto. Gire o objeto, e elas giram junto com ele. Este avião de papel está girado 90 graus em torno do eixo y na cena, então ele voa ao longo do eixo x do mundo, na direção para a qual aponta:

public float speed = 4f;

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

transform.Translate(Vector3.forward * speed * Time.deltaTime) faz a mesma coisa, porque Translate interpreta seu vetor no espaço próprio do objeto: nesse espaço, Vector3.forward significa a direção para a frente do objeto. Passe Space.World como segundo argumento e ele usará os eixos do mundo; assim, transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) move o avião ao longo do eixo z do mundo, qualquer que seja a direção para a qual ele aponte.

transform.Rotate também gira em torno dos eixos próprios do objeto. Visto de cima, um ângulo positivo em torno do eixo y gira um objeto na posição vertical para a direita, e um ângulo negativo o gira para a esquerda; a direção de transform.forward também gira junto.

challenge icon

Desafio

Fácil

Dê ao tanque controles de tanque: gire no próprio eixo e dirija na direção para a qual está voltado.

  1. Em Update(), enquanto a seta para a direita estiver pressionada, transform.Rotate(0, turn * Time.deltaTime, 0); e use -turn para a seta para a esquerda.
  2. Enquanto a seta para cima estiver pressionada, transform.Translate(Vector3.forward * speed * Time.deltaTime);.

Pressione “Jogar”, gire e dirija: o tanque vai para onde o bico aponta. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // Setas para a direita e para a esquerda: giram em torno de y. Seta para cima: move o tanque na direção para a qual ele está voltado.
    }
}

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

Pratique por conta própria: Playground de Unity