Vis tekst på objektberøring i Unity

Velkommen til denne Unity selvstudie, hvor du lærer, hvordan du får tekst til at vises, når du rører ved et objekt i dit spil. Denne enkle interaktion kan tilføje et fordybende element til dit projekt. Denne tutorial fungerer på både mobil og desktop.

Trin 1: Opret et Unity-projekt

Hvis du endnu ikke har gjort det, så start med at åbne Unity og oprette et nyt 3D-projekt. Sørg for, at du har de nødvendige aktiver installeret til dit foretrukne udviklingsmiljø.

Trin 2: Importer 3D-objekt

Importer et 3D-objekt til din scene, der repræsenterer det element, spillerne vil interagere med. Dette kan være en terning, kugle eller ethvert andet objekt, der passer til dit spil.

Trin 3: Tilføj Collider

Vedhæft en kolliderer-komponent til dit 3D-objekt. Dette vil gøre det muligt for den at registrere, når andre objekter interagerer med den. Almindelige kollideretyper omfatter Box Collider, Sphere Collider eller Mesh Collider, afhængigt af dit objekts form.

Trin 4: Opret lærred og tekst

Opret et UI Canvas ved at højreklikke i scenehierarkiet, vælge UI og derefter Canvas. Inde i lærredet skal du tilføje en tekstkomponent, der viser din besked.

Trin 5: Indstil Canvas til World Space

Skift gengivelsestilstanden for Canvas-komponenten til 'World Space'. Dette gør det muligt for lærredet at eksistere i dit spils 3D-rum.

Trin 6: Placer lærredet

Juster placeringen af ​​lærredet, så det flugter med dit 3D-objekt. Dette sikrer, at teksten vises i nærheden af ​​objektet, når den udløses.

Trin 7: Skriv script

Skriv et script, der registrerer, når spilleren interagerer med objektet. Når der opstår interaktion, skal du aktivere lærredet og indstille tekstkomponentens indhold. Tjek eksempelscriptet 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!";
        }
    }
}

Trin 8: Føj script til objekt

Vedhæft et C#-script til dit 3D-objekt, som vil håndtere interaktionslogikken og tildele alle de nødvendige variabler.

Trin 9: Test dit spil

Kør dit spil og test interaktionen. Teksten skal vises, når du klikker eller trykker på det udpegede objekt.

Foreslåede artikler
Rotation på stedet i enhed
Sådan sætter du spillet på pause i Unity
Oprettelse af samleobjekter og power-ups i Unity
Arbejde med strenge og manipulation af tekstdata i Unity
Fremstilling af lager- og varefremstillingssystem i enhed
Opret en GrabPack i Unity Inspireret af Poppy Playtime
Oprettelse af en Bullet Time-effekt i Unity