Rotación Automática de GameObject TextMeshPro para seguir a la cámara del jugador

Un Tutorial Unity para Rotar GameObject Mirando al Jugador: Mejora la Interacción de NPC, Orientación Dinámica y Scripting en Unity 3D

Introducción

Recientemente, mientras trabajaba en un proyecto personal en Unity, me enfrenté a un desafío específico relacionado con la programación de mis personajes no jugables (NPC). En una de las escenas del juego, he creado una calle virtual llena de NPC que ofrecen diversos servicios a los jugadores durante su aventura. Cada NPC tiene un nombre y un apodo flotando sobre su cabeza, lo cual ayuda a los jugadores a identificar rápidamente su función en el juego. Para lograr esto, utilicé un GameObject con TextMeshPro. Este tutorial es ideal si estás buscando un tutorial Unity para rotar GameObject mirando al jugador.

Sin embargo, me topé con un obstáculo: los nombres de los NPC permanecían estáticos y alineados de manera uniforme con la orientación y postura del personaje. Esto resultó en una experiencia menos dinámica de lo que inicialmente había imaginado.

NPC con un Text orientado hacia el frente

Problema

Aunque la implementación inicial de los nombres y apodos de los NPC sobre sus cabezas parecía funcionar bien, pronto me di cuenta de una limitación significativa. El verdadero desafío surge cuando el jugador comienza a moverse por la escena: los nombres de los NPC solo son visibles si el jugador se encuentra directamente frente a ellos o en un ángulo que permita ver claramente el texto flotante. Esto significa que, si el jugador se mueve y cambia de perspectiva, podría perderse información crucial sobre los NPC, lo cual afecta la experiencia de juego.

Jugador con problemas de visibilidad del Text asignado al NPC

Solución

Para abordar este desafío de manera efectiva, vamos a crear un script personalizado y lo añadiremos como un componente al GameObject que alberga el TextMeshPro. A continuación, te guiaré a través de los pasos necesarios para lograrlo:

Paso 1: Añadir un Nuevo Componente

Dirígete al Panel Inspector del GameObject que contiene el componente TextMeshPro. Haz clic en el botón «Add Component».

Botón Add Component en el Panel Inspector del GameObject que contiene el TextMeshPro

Paso 2: Crear un Nuevo Script

En el campo de búsqueda que aparece, escribe el nombre que deseas para tu script. En mi caso, lo he llamado FaceTextToPlayer. Luego, haz clic en «New Script» y confirma pulsando «Create and Add». Esto generará una nueva clase que podrás abrir en Visual Studio (o en el editor de código que prefieras) para comenzar a editar.

Añadiendo un nuevo script en el Panel Inspector

Paso 3: Editar el Código

Reemplaza el código autogenerado por el siguiente:

using UnityEngine;

public class FaceTextToPlayer : MonoBehaviour
{
    void FixedUpdate()
    {
        if (Camera.main == null)
            return;

        transform.LookAt(Camera.main.transform.position);

        //Descomenta esta línea si el GameObject del Text aparece inverso
        //transform.Rotate(0, 180, 0);
    }
}

Verificación

Ahora, si ejecutas la escena de nuevo, notarás que el texto siempre se orienta hacia la cámara, mejorando así la experiencia del jugador.

El GameObject TextMeshPro enfocando siempre a la cámara

Versión Video

¿Te gusta más aprender en formato video? No te preocupes, aquí lo tienes:

Nota Adicional

Es posible que te preguntes por qué hemos orientado el script hacia la cámara y no hacia el jugador. La razón es simple: si estás utilizando un sistema de cámara orbital y la cámara está posicionada en un ángulo elevado, el texto no sería visible si estuviera orientado hacia el jugador. Con esta implementación en nuestro tutorial Unity para rotar GameObject mirando al jugador, el texto siempre se orientará hacia la cámara, independientemente de su posición.

Espero que este tutorial te haya sido de gran utilidad. Si tienes alguna duda, pregunta o estás interesado en aprender algún aspecto específico de Unity, no dudes en dejar un comentario abajo. Tu retroalimentación es invaluable para crear futuros contenidos que sean de tu interés.

Mantente atento, ya que seguiré publicando más tutoriales y consejos sobre Unity en esta misma categoría.

¡Hasta la próxima!

Te puede interesar

Por David Cantón Nadales

David Cantón Nadales, ingeniero de software de Sevilla, España, es autor del bestseller Build Your own Metaverse with Unity. Reconocido como Microsoft MVP y Top Voices en Aplicaciones Móviles de LinkedIn. Con más de 20 años de experiencia, David ha liderado cientos proyectos a lo largo de su carrera, incluyendo videojuegos y aplicaciones de realidad virtual y aumentada con Oculus, Hololens, HTC Vive, DayDream y LeapMotion. Ha trabajado como Tech Lead en importantes multinacionales como Grupo Viajes El Corte Inglés y actualmente en SCRM Lidl del Grupo Schwarz. Fue embajador de la comunidad Samsung Dev Spain y organizador del Google Developers Group Sevilla. Durante el confinamiento por COVID-19, destacó como emprendedor social con la creación de Grita, una red social que facilitaba el apoyo psicológico entre personas. En 2022, ganó los Samsung Top Developers Awards.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.