Menu
CoddyTech

דחיפה באמצעות AddForce

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

ברגע שלאובייקט יש Rigidbody, הפיזיקה מזיזה אותו, ולכן מפסיקים לשנות את המיקום שלו ודוחפים אותו במקום זאת. rb.AddForce(force) דוחפת את הגוף באמצעות כוח, שהוא Vector3 בניוטונים. כוח לא קובע מהירות: הוא מאיץ את הגוף כל עוד ממשיכים להפעיל אותו, בקצב של הכוח חלקי המסה בכל שנייה. מפסיקים לדחוף, והגוף ממשיך לנוע במהירות שבה הוא נמצא.

לרחפת הזו (2 ק״ג) יש מנוע דחף: כל עוד מקש החץ למעלה לחוץ, כוח בעוצמה thrust דוחף אותה קדימה, לאורך +z. עם דחף בעוצמה 12, המהירות שלה גדלה ב-12 / 2 = 6 מ׳/ש׳ בכל שנייה:

public float thrust = 12f;
private Rigidbody rb;

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

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

כוחות מפעילים בתוך FixedUpdate(), שאותה Unity קוראת לפני כל צעד פיזיקה, 50 פעמים בשנייה (שיעור 4 מסביר למה). אין בשורה הזו Time.deltaTime: ‏AddForce כבר פורס את הכוח על פני הצעד, והכפלה ב-Time.deltaTime תהפוך את הדחיפה לחלשה פי 50. על הקרקע, החיכוך דוחף בכיוון ההפוך, ולכן כוח קטן עלול לא להזיז ארגז כבד כלל.

challenge icon

אתגר

קל

לדסקית שעל משטח ההחלקה יש Rigidbody, ולקרח אין חיכוך. דחוף אותה באמצעות החצים: הציר Horizontal דוחף אותה לאורך x והציר Vertical לאורך z, בכוח של push (4 ב־Inspector).

דחוף אותה באמצעות כוחות בלבד, כדי שהיא תמשיך להחליק כשתעזוב אותה. לחץ על הפעלה, נווט עם הדסקית ברחבי המשטח, ואז לחץ על בדיקה.

נסו בעצמכם

using UnityEngine;

public class PuckPusher : MonoBehaviour
{
    public float push = 4f;
    private Rigidbody rb;

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

    void FixedUpdate()
    {
        // דחוף את הדסקית: Horizontal לאורך ציר x, Vertical לאורך ציר z
    }
}
quiz iconבחנו את עצמכם

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

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