Sterowanie myszką w Unity
W tym samouczku nauczysz się, jak zaimplementować podstawowe sterowanie myszą w Unity. Omówimy wykrywanie danych wejściowych myszy, obsługę kliknięć myszą, ruch myszy i interakcję z obiektami gry za pomocą myszy.
Konfigurowanie projektu
Zanim zaczniemy kodować, utwórzmy prosty projekt Unity:
- Utwórz nowy projekt Unity.
- Dodaj do sceny nowy obiekt 3D lub 2D (np. sześcian lub duszek).
- Utwórz nowy skrypt C# o nazwie
MouseController
i dołącz go do głównej kamery lub dowolnego pustego obiektu GameObject.
Wykrywanie danych wejściowych myszy
Unity zapewnia wbudowane metody wykrywania danych wprowadzanych przez mysz. Możemy użyć metody Input.GetMouseButtonDown
do wykrywania naciśnięć przycisków myszy.
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");
}
}
}
Obsługa kliknięć myszą
Aby obsługiwać kliknięcia myszą na obiektach, musimy użyć Raycastingu. Raycasting pozwala nam wykryć, czy kliknięcie myszą przecina się z jakimiś obiektami gry w scenie.
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
}
}
}
}
Ruch myszy
Wykrywanie ruchu myszy w Unity można wykonać za pomocą Input.GetAxis
. Możemy użyć osi Mouse X
i Mouse Y
, aby uzyskać ruch myszy w kierunku poziomym i pionowym.
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);
}
}
}
Interakcja z obiektami gry
Rozszerzmy nasz skrypt, aby wchodzić w interakcję z obiektami gry. Zmienimy kolor obiektu, gdy zostanie on kliknięty.
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);
}
}
}
Wniosek
Omówiliśmy podstawy sterowania myszą w Unity. Dowiedzieliśmy się, jak wykrywać dane wejściowe myszy, obsługiwać kliknięcia myszy, śledzić ruchy myszy i wchodzić w interakcje z obiektami gry za pomocą Raycasting. Te koncepcje można rozszerzyć, aby tworzyć bardziej złożone interakcje w projektach Unity.