Wyświetlaj tekst na obiekcie dotykowym w Unity

Witamy w tym samouczku Unity, w którym dowiesz się, jak wyświetlić tekst po dotknięciu obiektu w grze. Ta prosta interakcja może dodać element immersyjny do Twojego projektu. Ten samouczek będzie działać zarówno na urządzeniach mobilnych, jak i na komputerach stacjonarnych.

Krok 1: Utwórz projekt Unity

Jeśli jeszcze tego nie zrobiłeś, zacznij od otwarcia Unity i utworzenia nowego projektu 3D. Upewnij się, że masz zainstalowane niezbędne zasoby dla preferowanego środowiska programistycznego.

Krok 2: Importuj obiekt 3D

Zaimportuj do swojej sceny obiekt 3D reprezentujący przedmiot, z którym gracze będą wchodzić w interakcję. Może to być sześcian, kula lub inny obiekt odpowiedni do Twojej gry.

Krok 3: Dodaj Collider

Dołącz komponent Collider do obiektu 3D. Umożliwi to wykrywanie interakcji z innymi obiektami. Typowe typy zderzaczy obejmują Collider Box, Sphere Collider lub Mesh Collider, w zależności od kształtu obiektu.

Krok 4: Utwórz płótno i tekst

Utwórz UI Canvas, klikając prawym przyciskiem myszy w hierarchii scen, wybierając UI, a następnie Canvas. Wewnątrz obszaru roboczego dodaj komponent Tekst, który wyświetli Twoją wiadomość.

Krok 5: Ustaw płótno na przestrzeń światową

Zmień tryb renderowania komponentu Canvas na 'World Space'. Dzięki temu płótno może istnieć w przestrzeni 3D Twojej gry.

Krok 6: Ustaw płótno

Dostosuj położenie płótna tak, aby było wyrównane z obiektem 3D. Dzięki temu po uruchomieniu tekst pojawi się w pobliżu obiektu.

Krok 7: Napisz skrypt

Napisz skrypt, który wykryje, kiedy gracz wchodzi w interakcję z obiektem. Kiedy nastąpi interakcja, aktywuj Canvas i ustaw zawartość komponentu Tekst. Sprawdź przykładowy skrypt poniżej:

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

Krok 8: Dodaj skrypt do obiektu

Dołącz skrypt C# do swojego obiektu 3D, który obsłuży logikę interakcji i przypisze wszystkie niezbędne zmienne.

Krok 9: Przetestuj swoją grę

Uruchom swoją grę i przetestuj interakcję. Tekst powinien pojawić się po kliknięciu lub dotknięciu wyznaczonego obiektu.

Sugerowane artykuły
Tworzenie ekwipunku i systemu wytwarzania przedmiotów w Unity
Jak odtwarzać pliki wideo w Unity
Tworzenie sceny Game Over w Unity
Twórz obiekty skryptowe w Unity
Tworzenie GrabPack w Unity zainspirowany Poppy Playtime
Tworzenie efektu Bullet Time w Unity
Tworzenie obiektów interaktywnych w Unity