La manipulación de las propiedades de un componente transform en los videojuegos es esencial para posicionar, rotar y cambiar el tamaño de los objetos dentro del entorno virtual. Esta clase te guiará en el proceso de manipular estas transformaciones, aprovechando tus conocimientos previos sobre vectores.
¿Qué son los vectores y cómo se utilizan?
Los vectores son entidades matemáticas que nos ayudan a manejar posiciones, rotaciones y escalas dentro de un entorno 3D. No necesitas recordar cómo realizar las operaciones matemáticas manualmente; la programación nos facilita estas tareas. La clave está en interpretar correctamente el uso de los vectores. Por ejemplo:
Suma de vectores: indícase mover un objeto en una dirección determinada.
Resta de vectores: puede ayudar a calcular distancias o diferencias de posición.
Multiplicación por un escalar: cambia el tamaño del vector, útil para escalados.
¿Qué diferencia hay entre espacio local y global?
Espacio global: se refiere al mundo del videojuego. Las direcciones son absolutas; por ejemplo, el norte siempre será el norte, sin importar la orientación del objeto.
Espacio local: es relativo al objeto. La dirección "arriba" o "frente" puede variar según la orientación del objeto. Comprender esta diferencia es crucial para manipular correctamente los vectores direccionales, que pueden ser tanto globales como locales.
¿Cómo acceder y modificar el Transform de un objeto en Unity?
Para modificar el Transform, sigue estos pasos:
Crear un script básico:
Crea un script en C# llamado Movimiento.
Acceder al componente Transform:
Usa la propiedad transform con minúscula para acceder al objeto Transform de Unity, como se muestra aquí:
¿Qué precauciones debo tomar al modificar propiedades del Transform?
Es vital recordar que algunas propiedades, como position, son de solo lectura directa. Sin embargo, puedes modificarlas indirectamente como se muestra con los vectores. Además, establecer las coordenadas adecuadamente es crucial para evitar valores incorrectos o comportamientos inesperados.
Adentrándonos en estos conceptos y prácticas, continuarás perfeccionando tus habilidades para crear entornos de juego dinámicos y atractivos. ¡Sigue practicando!
Sería genial ver como tienes configurada tu editor de código para trabajar con Unity, yo uso VS pero se ven muy prácticos los atajos que tienes.
yo también quiera saber como lo tiene configurado jejej
Dios les bendiga, tiene VIM y lo que hizo fue configurar sus propios snippets en el editor. Hay formas de configurar tus propios snippets en VS, yo por ejemplo uso serenade que es una app para codear con voz entonces yo tengo configurados demasiados atajos. Lo uso más que nada con three js que es para hacer 3d en javascript
Clase #08: Manipulando al componente Transform
Espacio
El espacio global es el mundo, sus coordenadas son absolutas dentro de Unity. Un espacio local por el contrario, es relativo al espacio global y es propio de cada objeto de la escena.
Vectores direccionales
Son vectores unitarios. Hay dos formas de interpretarlos, pueden ser globales: p.ejm: Vector3.front, que son respecto al mundo o pueden ser vectores direccionales locales y se encuentran en la instancia de la clase transform de cada GameObject.
Las propiedades en C# siempre empiezan con minúscula.
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Utils { public static Vector3 SetX(Vector3 v,float x)// SetX es el nombre del método estático{ v.x = x;return v;}}```Hacemos un script con una utilidad para usarla en el script de movimiento. Este script no hereda de MonoBehaviour y no es Serializable.
```c#
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Movimiento : MonoBehaviour {// Start is called before the first frame updatevoidStart(){// Por herencia no es necesario colocar this.transform...// Se crea una clase Utils para evitar reescribir todo el tiempo las 3 líneas de abajo/* Vector3 v = transform.position;
v.x = 4;
transform.position = v; */// Para que se modifique transform debemos reasignarlo ya que es de solo lectura transform.position = Utils.SetX(transform.position,4);}}```Script de movimiento: para poner el cubo en determinada posición del mundo.
Clase # 8 - Manipulando al componente Transform
Modificación del Componente Transform
Cómo no modificar el Transform
No podemos modificar directamente los componentes de position de esta manera:
csharp
Copiar código
transform.position.x = 4;
Esto genera errores porque position.x es una propiedad de solo lectura.
Forma Correcta de Modificar Transform
Debemos asignar los valores de forma correcta creando un nuevo Vector3: