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.