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:
- Opret et nyt Unity-projekt.
- Tilføj et nyt 3D- eller 2D-objekt til scenen (f.eks. en Cube eller en Sprite).
- 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.