Mostrar texto al tocar un objeto en Unity

Bienvenido a este tutorial Unity, donde aprenderás cómo hacer que aparezca texto al tocar un objeto en tu juego. Esta simple interacción puede agregar un elemento inmersivo a su proyecto. Este tutorial funcionará tanto en dispositivos móviles como en computadoras de escritorio.

Paso 1: crear un proyecto Unity

Si aún no lo has hecho, comienza abriendo Unity y creando un nuevo proyecto 3D. Asegúrese de tener instalados los recursos necesarios para su entorno de desarrollo preferido.

Paso 2: importar objeto 3D

Importa un objeto 3D a tu escena que represente el elemento con el que interactuarán los jugadores. Podría ser un cubo, una esfera o cualquier otro objeto adecuado para tu juego.

Paso 3: agregar colisionador

Adjunte un componente colisionador a su objeto 3D. Esto le permitirá detectar cuando otros objetos interactúan con él. Los tipos de colisionadores comunes incluyen Box Collider, Sphere Collider o Mesh Collider, según la forma de su objeto.

Paso 4: crea lienzo y texto

Cree un UI Canvas haciendo clic derecho en la jerarquía de escenas, seleccionando UI y luego Canvas. Dentro del lienzo, agregue un componente de Texto que mostrará su mensaje.

Paso 5: establezca el lienzo en el espacio mundial

Cambie el Modo de renderizado del componente Lienzo a 'World Space'. Esto permite que el lienzo exista en el espacio 3D de tu juego.

Paso 6: Colocar el lienzo

Ajuste la posición del lienzo para que se alinee con su objeto 3D. Esto asegura que el texto aparezca cerca del objeto cuando se activa.

Paso 7: escribir el guión

Escribe un script que detectará cuando el jugador interactúa con el objeto. Cuando se produzca la interacción, active el lienzo y configure el contenido del componente de texto. Consulte el script de ejemplo a continuación:

'ObjectInteraction.cs'

using UnityEngine;
using UnityEngine.UI;

public class ObjectInteraction : MonoBehaviour
{
    public GameObject canvas;
    public Text displayText;

    private void Start()
    {
        canvas.SetActive(false);
    }

    private void Update()
    {
        // Use inline conditional to determine input position based on platform
        Vector3 inputPosition = (Input.touchCount > 0) ? Input.GetTouch(0).position : (Vector3)Input.mousePosition;

        // Raycast to determine if the touch or click hits the object
        Ray ray = Camera.main.ScreenPointToRay(inputPosition);

        RaycastHit hit;
        if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == gameObject)
        {
            // Activate the canvas and set the text
            canvas.SetActive(true);
            displayText.text = "Your message here!";
        }
    }
}

Paso 8: agregar script al objeto

Adjunte un script C# a su objeto 3D, que manejará la lógica de interacción y asignará todas las variables necesarias.

Paso 9: prueba tu juego

Ejecuta tu juego y prueba la interacción. El texto debería aparecer al hacer clic o tocar el objeto designado.