Menu
CoddyTech

לנחות או להחטיא

חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 85 מתוך 85.

האתגר הזה משלים את משחק המגדל ואת היחידה הראשונה בקורס: מנוף, בלוק נופל ובדיקת נחיתה עם Mathf.Abs.

challenge icon

אתגר

קשה

גרום לכל בלוק לנחות על הערימה או ליפול ממנה.

  1. כשהבלוק הנופל מגיע ל־y של top ועוד 1, ונמצא במרחק קטן מ־1 מה־x של top, קבע את ערך ה־y שלו בדיוק לערך הזה, הפוך אותו ל־top, רוקן את falling ורשום ביומן "Stack: " + count.
  2. אחרת, כשהוא מתחת ל־y = -3, השמד אותו, רוקן את falling ורשום ביומן Missed!.

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

נסו בעצמכם

using UnityEngine;

public class Crane : MonoBehaviour
{
    [SerializeField] private GameObject blockPrefab;
    [SerializeField] private Transform top;
    [SerializeField] private float craneSpeed = 3f;
    [SerializeField] private float craneEdge = 4f;
    [SerializeField] private float fallSpeed = 7f;

    private float direction = 1f;
    private Transform falling;
    private int stack;

    void Update()
    {
        transform.position += new Vector3(direction * craneSpeed * Time.deltaTime, 0f, 0f);
        if (transform.position.x > craneEdge) direction = -1f;
        if (transform.position.x < -craneEdge) direction = 1f;

        bool drop = Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0);
        if (drop && falling == null)
        {
            Vector3 spot = new Vector3(transform.position.x, transform.position.y - 1f, 0f);
            falling = Instantiate(blockPrefab, spot, Quaternion.identity).transform;
        }

        if (falling != null)
        {
            falling.position += Vector3.down * fallSpeed * Time.deltaTime;
            // נחיתה על ערימת הקוביות: בשיעור הבא.
        }
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות הסקריפטים ב-Unity

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