Menu
CoddyTech

מהירות

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

rb.linearVelocity מתאר איך הגוף נע כרגע: Vector3 במטרים לשנייה לאורך צירי x, y ו-z. קריאת הערך מגלה לאן הגוף נע, ו-rb.linearVelocity.magnitude היא המהירות שלו. הגדרת הערך משנה מיד את התנועה, בלי האצה הדרגתית ובלי קשר למסה: קופסה במשקל 1 kg וכספת במשקל 50 kg, שתיהן מוגדרות למהירות של 2 m/s, ינועו בדיוק במהירות של 2 m/s החל מצעד הפיזיקה הבא. כוח הכבידה, החיכוך והפגיעות ימשיכו לפעול עליהן לאחר מכן.

הקארט הזה נוסע קדימה במהירות של cruise m/s בדיוק. הוא מעתיק את המהירות, משנה רק את z ומשייך אותה בחזרה, כך שערך ה-y שכוח הכבידה הקנה לו נשמר, והקארט עדיין נופל מקצה הרמפה:

void FixedUpdate()
{
    Vector3 vel = rb.linearVelocity;
    vel.z = cruise;            // קדימה במהירות של cruise m/s בדיוק
    rb.linearVelocity = vel;   // y שומר על הערך שהכבידה העניקה לו
}

הגדרת y ל-0 גם כן תבטל בכל צעד את המהירות שכוח הכבידה הקנה לו, והקארט יגלוש מטה מהרמפה במקום ליפול. לפני Unity 6 המאפיין הזה נקרא velocity. במדריכים ישנים עדיין כותבים rb.velocity: ב-Unity 6 הקוד מתקמפל, אך מוצגת אזהרה שלפיה velocity מיושן ושמו שונה ל-linearVelocity. כך גם drag הפך ל-linearDamping. השתמשו בשמות החדשים.

challenge icon

אתגר

קל

הוליכו את הרובוט במהירות של speed מ׳/ש׳ בדיוק, ואפשרו לו ליפול מהקצה.

  1. ב־FixedUpdate(), קראו את float h = Input.GetAxisRaw("Horizontal"); ואת float v מתוך "Vertical".
  2. הגדירו את rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed);, תוך שמירה על ערך ה־y של כוח הכבידה.

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

נסו בעצמכם

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

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

    void FixedUpdate()
    {
        // הזז את הרובוט באמצעות מקשי החצים במהירות speed בדיוק, תוך שמירה על רכיב ה־y של כוח הכבידה
    }
}

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

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