Espacio local y mundial
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 26 de 85.
Un objeto tiene sus propias direcciones, además de las del mundo. transform.forward indica hacia dónde apunta la nariz del objeto (la flecha azul en la vista Scene de Unity), expresada como un vector del mundo de una unidad de longitud; transform.right y transform.up son su propia derecha y arriba. Gira el objeto y estas direcciones giran con él. Este avión de papel está girado 90 grados alrededor de y en la escena, así que vuela a lo largo del eje x del mundo, hacia donde apunta:
public float speed = 4f;
void Update()
{
transform.position += transform.forward * speed * Time.deltaTime;
}transform.Translate(Vector3.forward * speed * Time.deltaTime) hace lo mismo, porque Translate interpreta su vector en el espacio propio del objeto: allí, Vector3.forward significa hacia delante del objeto. Pasa Space.World como segundo argumento y, en cambio, usará los ejes del mundo, así que transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) lo desplaza a lo largo del eje z del mundo, independientemente de hacia dónde apunte el avión.
transform.Rotate también gira alrededor de los ejes propios del objeto. Visto desde arriba, un ángulo positivo alrededor de y gira un objeto erguido hacia su derecha y uno negativo hacia su izquierda; su transform.forward gira con él.
Desafío
FácilDale al tanque controles de tanque: que gire sobre el sitio y avance hacia donde apunta.
- En
Update(), mientras se mantenga pulsada la flecha derecha, usatransform.Rotate(0, turn * Time.deltaTime, 0);, y usa-turnpara la flecha izquierda. - Mientras se mantenga pulsada la flecha arriba, usa
transform.Translate(Vector3.forward * speed * Time.deltaTime);.
Pulsa «Jugar», gira y avanza: el tanque va hacia donde apunta su morro. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Tank : MonoBehaviour
{
public float speed = 3f;
public float turn = 90f;
void Update()
{
// Flechas derecha/izquierda: giran alrededor de y. Flecha arriba: avanza en la dirección hacia la que apunta el tanque.
}
}
Todas las lecciones de Fundamentos de scripting en Unity
1Conceptos básicos de C# en Unity
Hola, UnityVariablesLos decimales necesitan una fTexto en la consolaVariables que recuerdanIf y ElseComparar númerosRepaso: Recolector de monedas7Bucles y métodos
Repetir con forBucles dentro de buclesEscribir un métodoMétodos que respondenArraysRepaso: escalera10Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias vencen a FindEl null de UnityRepaso: moneda más cercana13Proyecto: Esquiva los bloques
El corredorBloques desde el cielo2Haz que se mueva
Coloca el cuboMuévelo en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo5Vectores
Sumar vectoresDireccionesEspacio local y mundialVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron8GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz3El Inspector
Campos del InspectorSerializeFieldFloats y MathfAtributos del InspectorRepaso: Ascensor6Transformaciones y jerarquía
Padres e hijosIza la banderaEscalaMira las cosasMuévete hacia un puntoRepaso: Luna en órbita9Proyecto: Atrapa la estrella
El cazadorUna estrella fugaz12El ciclo de vida de un script
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vidaPractica por tu cuenta: Playground de Unity