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.
Desafio
FácilDê ao tanque controles de tanque: gire no próprio eixo e dirija na direção para a qual está voltado.
- Em
Update(), enquanto a seta para a direita estiver pressionada,transform.Rotate(0, turn * Time.deltaTime, 0);e use-turnpara a seta para a esquerda. - 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
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity