Exibir texto no toque do objeto no Unity

Bem-vindo a este tutorial Unity, onde você aprenderá como fazer texto aparecer ao tocar em um objeto no seu jogo. Essa interação simples pode adicionar um elemento envolvente ao seu projeto. Este tutorial funcionará tanto em dispositivos móveis quanto em computadores.

Etapa 1: Crie um projeto Unity

Se ainda não o fez, comece abrindo Unity e criando um novo projeto 3D. Certifique-se de ter os ativos necessários instalados para seu ambiente de desenvolvimento preferido.

Etapa 2: importar objeto 3D

Importe um objeto 3D para sua cena que representa o item com o qual os jogadores irão interagir. Pode ser um cubo, uma esfera ou qualquer outro objeto adequado ao seu jogo.

Etapa 3: adicionar colisor

Anexe um componente colisor ao seu objeto 3D. Isso permitirá detectar quando outros objetos interagem com ele. Os tipos comuns de colisor incluem Box Collider, Sphere Collider ou Mesh Collider, dependendo da forma do seu objeto.

Etapa 4: criar tela e texto

Crie um UI Canvas clicando com o botão direito na hierarquia da cena, selecionando UI e depois Canvas. Dentro da tela, adicione um componente Text que exibirá sua mensagem.

Etapa 5: definir o Canvas para o espaço mundial

Altere o modo de renderização do componente Canvas para 'World Space'. Isso permite que a tela exista no espaço 3D do seu jogo.

Etapa 6: posicionar a tela

Ajuste a posição da tela para que ela se alinhe ao objeto 3D. Isso garante que o texto apareça próximo ao objeto quando acionado.

Etapa 7: escrever o script

Escreva um script que detectará quando o jogador interage com o objeto. Quando ocorrer interação, ative o Canvas e defina o conteúdo do componente Texto. Verifique o script de exemplo abaixo:

'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!";
        }
    }
}

Etapa 8: adicionar script ao objeto

Anexe um script C# ao seu objeto 3D, que irá lidar com a lógica de interação e atribuir todas as variáveis ​​necessárias.

Etapa 9: teste seu jogo

Execute seu jogo e teste a interação. O texto deve aparecer quando você clica ou toca no objeto designado.

Artigos sugeridos
Trabalhando com strings e manipulando dados de texto no Unity
Criando um jogo inspirado no Pac-Man no Unity
Como reproduzir arquivos de vídeo no Unity
Criando uma cena de Game Over no Unity
Fazendo inventário e sistema de criação de itens no Unity
Métodos de ofuscação do Unity e proteção anti-hack
Criando objetos interativos no Unity