Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Dale al tanque controles de tanque: que gire sobre el sitio y avance hacia donde apunta.

  1. En Update(), mientras se mantenga pulsada la flecha derecha, usa transform.Rotate(0, turn * Time.deltaTime, 0);, y usa -turn para la flecha izquierda.
  2. 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

Practica por tu cuenta: Playground de Unity