בקרות עכבר ב-Unity
במדריך זה, תלמד כיצד ליישם פקדי עכבר בסיסיים ב-Unity. נסקור את זיהוי קלט העכבר, טיפול בלחיצות עכבר, תנועת עכבר ואינטראקציה עם אובייקטים במשחק באמצעות העכבר.
הגדרת הפרויקט
לפני שנתחיל בקידוד, בואו נגדיר פרויקט פשוט Unity:
- צור פרויקט Unity חדש.
- הוסף אובייקט תלת-ממדי או דו-ממדי חדש לסצנה (למשל, קובייה או ספרייט).
- צור סקריפט C# חדש בשם
MouseController
וצרף אותו למצלמה הראשית או לכל GameObject ריק.
זיהוי קלט עכבר
Unity מספק שיטות מובנות לזיהוי קלט עכבר. אנו יכולים להשתמש בשיטת Input.GetMouseButtonDown
כדי לזהות לחיצות על לחצני עכבר.
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");
}
}
}
טיפול בלחיצות עכבר
כדי לטפל בלחיצות עכבר על אובייקטים, עלינו להשתמש ב-Raycasting. Raycasting מאפשר לנו לזהות אם לחיצת עכבר מצטלבת עם חפצי משחק כלשהם בסצנה.
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
}
}
}
}
תנועת עכבר
זיהוי תנועת עכבר ב-Unity יכול להתבצע באמצעות Input.GetAxis
. אנו יכולים להשתמש בצירים Mouse X
ו-Mouse Y
כדי לקבל את תנועת העכבר בכיוון האופקי והאנכי.
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);
}
}
}
אינטראקציה עם אובייקטי משחק
בואו נרחיב את הסקריפט שלנו לאינטראקציה עם אובייקטים במשחק. נשנה את צבעו של אובייקט בעת לחיצה עליו.
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);
}
}
}
סיכום
כיסינו את היסודות של בקרות העכבר ב-Unity. למדנו כיצד לזהות קלט עכבר, לטפל בלחיצות עכבר, לעקוב אחר תנועת העכבר ולקיים אינטראקציה עם אובייקטים במשחק באמצעות Raycasting. ניתן להרחיב את המושגים הללו כדי ליצור אינטראקציות מורכבות יותר בפרויקטי Unity שלך.