Olhar para as coisas
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 34 de 85.
transform.LookAt(point) gira um objeto para que seu eixo dianteiro, a seta azul do eixo z, aponte para uma posição no mundo. Ele gira o objeto, mas não o move. Este holofote está em uma torre em (0, 6, 0) e aponta para o portão em (4, 0, 10):
void Start()
{
transform.LookAt(new Vector3(4, 0, 10));
}O portão está mais baixo que a luz, então o holofote também se inclina para baixo ao girar: LookAt aponta diretamente para o ponto, inclusive para cima ou para baixo. Depois disso, transform.forward aponta da luz em direção ao portão.
Chamado em Start(), LookAt aponta uma vez. Chamado em Update(), ele aponta novamente a cada quadro, então o objeto continua voltado para o ponto enquanto o objeto ou o ponto se move. Seu argumento é sempre uma posição: LookAt(Vector3.forward) aponta para o ponto do mundo (0, 0, 1), um local próximo ao centro do mundo, onde quer que o objeto esteja.
Desafio
MédioFaça o rover ficar voltado para a direção em que ele se desloca.
- Abaixo do comentário em
Update(), escrevaif (move != Vector3.zero), para que o rover mantenha a direção para a qual está voltado quando estiver parado. - Dentro dele, chame
transform.LookAt(transform.position + move);.
Pressione “Jogar” e dirija: a parte dianteira do rover se volta para a direção em que ele vai. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 3f;
void Update()
{
Vector3 move = Vector3.zero;
if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
move = move.normalized;
transform.position += move * speed * Time.deltaTime;
// Gire o rover para que ele fique voltado na direção em que está se movendo
}
}
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