Menu
CoddyTech

שיגור

שיעור 2 מתוך 19 בקורס Unity: משחק שובר לבנים של Coddy.

הכדור ממתין על המשטח עד שהשחקן משגר אותו. עד אז, Update() מציבה אותו מעל המשטח בכל פריים, כך שהוא נע לכל מקום שאליו המשטח נע, ו־bool זוכר אם הוא כבר עף:

void Update()
{
    if (launched) return;
    transform.position = paddle.position + Vector3.up * 0.5f;
}

ל־Rigidbody של הכדור אין כוח כבידה, לכן מהירות שמוגדרת פעם אחת משאירה אותו בתנועה ישרה. wasPressedThisFrame הוא true רק בפריים שבו מקש נלחץ, לכן יש לקרוא אותו בתוך Update(). כדי לנוע במהירות מדויקת בכל כיוון, יש להפוך את הכיוון לאורך של יחידה אחת בעזרת .normalized, ואז להכפיל: new Vector3(3f, 4f, 0f).normalized * 10f נע במהירות של 10 יחידות בשנייה.

challenge icon

אתגר

קל

הכדור נשאר על המשטח עד שמקש הרווח משגר אותו.

  1. ב־Ball, הוסף bool launched; ואת public void Launch(Vector3 direction): launched = true; ואת rb.linearVelocity = direction.normalized * speed;
  2. ב־Update(), החזר אם הכדור שוגר; אחרת, הצב את הכדור ב־paddle.position + Vector3.up * 0.5f.
  3. כאשר wasPressedThisFrame מתקיים עבור מקש הרווח, קרא ל־Launch(new Vector3(0.3f, 1f, 0f)).

לחץ על „שחק”, הזז את המשטח ואז לחץ על מקש הרווח: הכדור יעוף למעלה וייעצר בקיר הראשון (ההקפצה תגיע בהמשך). ואז לחץ על „בדיקה”.

נסו בעצמכם

using UnityEngine;
using UnityEngine.InputSystem;

public class Ball : MonoBehaviour
{
    public Transform paddle;
    public float speed = 9f;

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    // השלב הבא: הכדור נשאר על המחבט עד שלחיצה על Space משגרת אותו.
}

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

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