בניית משטחים
שיעור 7 מתוך 25 בקורס משחק Unity: הגנת מגדלים של Coddy.
השחקן בונה מגדלים בלחיצה על משטחי הבנייה האפורים. לחיצה היא נקודה על המסך, ולכן היא הופכת לקרן: Camera.main.ScreenPointToRay מחזירה את הקרן מהמצלמה דרך הנקודה הזאת, ו-Physics.Raycast מדווחת על הקוליידר הראשון שבו היא פוגעת — זה שמתחת לעכבר.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}הקרן פוגעת גם בקרקע, בשביל ובעצים. hit.collider.TryGetComponent(out BuildPad pad) בודקת אם הדבר שנפגע הוא משטח בנייה, כך שלחיצות אחרות אינן עושות דבר. כל סצנה כאן משתמשת ב-Input System, ולכן Mouse.current קורא את מיקום העכבר (using UnityEngine.InputSystem;).
אתגר
בינונילחץ על משטח כדי לבנות עליו מגדל חצים.
- ב־
BuildPad, הוסףpublic Tower tower;. - ב־
BuildManager, הוסף[SerializeField] private Tower towerPrefab;. בתוךUpdate, כאשרMouse.current.leftButton.wasPressedThisFrame, שגר קרן דרך העכבר. - אם היא פוגעת ב־
BuildPadשה־towerשלו הוא null, הגדרpad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.
לחץ על שחק ולחץ על המשטחים: על כל אחד מהם יעמוד מגדל אחד. לאחר מכן לחץ על בדיקה.
נסו בעצמכם
using UnityEngine;
// בהמשך: לחיצה על משטחי הבנייה כדי להציב מגדלים, החנות ולוח המגדלים.
public class BuildManager : MonoBehaviour
{
}
כל השיעורים ביחידה משחק Unity: הגנת מגדלים
תרגלו בעצמכם: Unity אונליין