Musekontroller i Unity

I denne tutorial lærer du, hvordan du implementerer grundlæggende musekontroller i Unity. Vi vil dække registrering af musinput, håndtering af museklik, musebevægelser og interaktion med spilobjekter ved hjælp af musen.

Opsætning af projektet

Før vi begynder at kode, lad os opsætte et simpelt Unity-projekt:

  1. Opret et nyt Unity-projekt.
  2. Tilføj et nyt 3D- eller 2D-objekt til scenen (f.eks. en Cube eller en Sprite).
  3. Opret et nyt C#-script med navnet MouseController og vedhæft det til hovedkameraet eller et hvilket som helst tomt GameObject.

Registrerer museindgang

Unity giver indbyggede metoder til at detektere musinput. Vi kan bruge Input.GetMouseButtonDown metoden til at registrere museknaptryk.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // Left mouse button
        {
            Debug.Log("Left mouse button pressed");
        }

        if (Input.GetMouseButtonDown(1)) // Right mouse button
        {
            Debug.Log("Right mouse button pressed");
        }
    }
}

Håndtering af museklik

For at håndtere museklik på objekter skal vi bruge Raycasting. Raycasting giver os mulighed for at registrere, om et museklik krydser et hvilket som helst spilobjekt i scenen.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log("Hit: " + hit.transform.name);
                // Perform actions on the hit object here
            }
        }
    }
}

Musebevægelse

Detektering af musebevægelser i Unity kan gøres ved hjælp af Input.GetAxis. Vi kan bruge Mouse X og Mouse Y akserne til at få musebevægelsen i vandret og lodret retning.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

Interaktion med spilobjekter

Lad os udvide vores script til at interagere med spilobjekter. Vi ændrer farven på et objekt, når der klikkes på det.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Renderer renderer = hit.transform.GetComponent();
                if (renderer != null)
                {
                    renderer.material.color = Random.ColorHSV();
                }
            }
        }

        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

Konklusion

Vi har dækket det grundlæggende i musekontrol i Unity. Vi lærte, hvordan man detekterer museinput, håndterer museklik, sporer musebevægelser og interagerer med spilobjekter ved hjælp af Raycasting. Disse koncepter kan udvides for at skabe mere komplekse interaktioner i dine Unity-projekter.