Menu
CoddyTech

בניית משטחים

שיעור 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;).

challenge icon

אתגר

בינוני

לחץ על משטח כדי לבנות עליו מגדל חצים.

  1. ב־BuildPad, הוסף public Tower tower;.
  2. ב־BuildManager, הוסף [SerializeField] private Tower towerPrefab;. בתוך Update, כאשר Mouse.current.leftButton.wasPressedThisFrame, שגר קרן דרך העכבר.
  3. אם היא פוגעת ב־BuildPad שה־tower שלו הוא null, הגדר pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.

לחץ על שחק ולחץ על המשטחים: על כל אחד מהם יעמוד מגדל אחד. לאחר מכן לחץ על בדיקה.

נסו בעצמכם

using UnityEngine;

// בהמשך: לחיצה על משטחי הבנייה כדי להציב מגדלים, החנות ולוח המגדלים.
public class BuildManager : MonoBehaviour
{
}

כל השיעורים ביחידה משחק Unity: הגנת מגדלים

תרגלו בעצמכם: Unity אונליין