Menu
CoddyTech

הכדור המתגלגל

חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 28 מתוך 71.

בפרק הזה נבנה משחק קטן, Coin Rush. מגלגלים כדור ברחבי זירה מוקפת קירות בעזרת מקשי החצים ואוספים מטבעות לפני שהזמן אוזל. שני סקריפטים מתחלקים בעבודה, כפי שהיו עושים בפרויקט Unity: Ball מזיז את הכדור ואחראי גם על הניקוד ועל השעון, ו-Coin נמצא על כל מטבע. Coin.cs מתחיל כמחלקה ריקה, ובשיעור הבא נמלא אותה.

כדור מתגלגל כשדוחפים אותו במקום להציב אותו במיקום אחר. דחפו את ה-Rigidbody שלו באמצעות AddForce והשאירו את הסיבוב שלו חופשי: הכוח מזיז את הכדור, והחיכוך עם הרצפה אוחז בתחתית הכדור וגורם לו להסתובב. כדור הבאולינג הזה מתגלגל לאורך המסלול שלו כל עוד מקש הרווח לחוץ:

public float push = 6f;
private Rigidbody rb;

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

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

כדור שמתגלגל בלי להחליק מסתובב במהירות השווה למהירותו חלקי הרדיוס שלו, ולכן כדור ברדיוס 0.5 שנע במהירות של 3 יחידות לשנייה מסתובב במהירות של 6 רדיאנים לשנייה (rb.angularVelocity). אם תשנו במקום זאת את transform.position, או תקפיאו את הסיבוב שלו תחת Constraints של ה-Rigidbody, הוא יחליק כמו דיסקית בלי להסתובב. כדור פשוט בצבע אחיד נראה אותו הדבר בשני המקרים: כדי לראות את הגלגול, צפו ב-Angular Velocity שביחידת Info של ה-Rigidbody בזמן שהמשחק פועל.

challenge icon

אתגר

בינוני

התחילו את Coin Rush: גלגלו את הכדור באמצעות החצים.

  1. ב־Start() של Ball.cs, הגדירו rb = GetComponent<Rigidbody>();.
  2. ב־FixedUpdate(), קראו את float x = Input.GetAxis("Horizontal"); ואת float z = Input.GetAxis("Vertical");, ואז קראו ל־rb.AddForce(new Vector3(x, 0f, z) * force);.

לחצו על "שחק", לחצו על המשחק וגלגלו: הכדור פונה בזמן שהוא נע. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // הזיזו את הכדור בעזרת החצים: Horizontal לאורך ציר x, Vertical לאורך ציר z.
    }
}

כל השיעורים ביחידה פיזיקה ומשחקיות

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