Vis tekst på objektberøring i Unity

Velkommen til denne Unity veiledningen, der du lærer hvordan du får tekst til å vises når du berører et objekt i spillet ditt. Denne enkle interaksjonen kan legge til et oppslukende element til prosjektet ditt. Denne opplæringen vil fungere på både mobil og desktop.

Trinn 1: Lag et Unity-prosjekt

Hvis du ikke har gjort det ennå, start med å åpne Unity og lage et nytt 3D-prosjekt. Sørg for at du har de nødvendige ressursene installert for ditt foretrukne utviklingsmiljø.

Trinn 2: Importer 3D-objekt

Importer et 3D-objekt til scenen din som representerer gjenstanden spillerne vil samhandle med. Dette kan være en kube, kule eller et annet objekt som passer for spillet ditt.

Trinn 3: Legg til Collider

Fest en kollidererkomponent til 3D-objektet ditt. Dette vil gjøre det mulig for den å oppdage når andre objekter samhandler med den. Vanlige kollideretyper inkluderer Box Collider, Sphere Collider eller Mesh Collider, avhengig av objektets form.

Trinn 4: Lag lerret og tekst

Lag et UI Canvas ved å høyreklikke i scenehierarkiet, velge UI og deretter Canvas. Inne i lerretet legger du til en tekstkomponent som viser meldingen din.

Trinn 5: Sett Canvas til World Space

Endre gjengivelsesmodus for Canvas-komponenten til 'World Space'. Dette gjør at lerretet kan eksistere i 3D-rommet i spillet ditt.

Trinn 6: Plasser lerretet

Juster plasseringen av lerretet slik at det er på linje med 3D-objektet ditt. Dette sikrer at teksten vises nær objektet når den utløses.

Trinn 7: Skriv skript

Skriv et script som vil oppdage når spilleren samhandler med objektet. Når interaksjon oppstår, aktiverer du lerretet og setter tekstkomponentens innhold. Sjekk eksempelskriptet nedenfor:

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

Trinn 8: Legg til skript til objekt

Fest et C#-skript til 3D-objektet ditt, som vil håndtere interaksjonslogikken og tilordne alle nødvendige variabler.

Trinn 9: Test spillet ditt

Kjør spillet ditt og test interaksjonen. Teksten skal vises når du klikker eller berører det angitte objektet.

Foreslåtte artikler
Rotasjon på plass i enhet
Hvordan sette spillet på pause i Unity
Lage samleobjekter og power-ups i Unity
Arbeide med strenger og manipulere tekstdata i Unity
Lage inventar og vareutformingssystem i enhet
Lag en GrabPack i Unity Inspirert av Poppy Playtime
Skape en kuletidseffekt i Unity