Menu
CoddyTech

גופים קינמטיים

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

פלטפורמות נעות, מעליות ודלתות צריכות להתנגש כמו עצמים מוצקים, אבל אסור להן ליפול או להידחף ממקומן על ידי כל דבר שנוחת עליהן. זהו גוף קינמטי: הגדירו rb.isKinematic = true, וכוח הכבידה, הכוחות והפגיעות כבר לא יזיזו אותו. המתנגש שלו עדיין נחשב, ולכן גוף דינמי (שהפיזיקה מזיזה) נתקל בו כמו בקיר ועומד עליו כמו על רצפה. אתם מזיזים גוף קינמטי בעצמכם באמצעות rb.MovePosition.

המעלית הזאת עולה במהירות של lift מ׳/ש׳ עד שהיא מגיעה ל־top. MovePosition מקבלת את המיקום שאליו הגוף צריך להגיע אחרי הצעד הזה, ולכן הקוד מוסיף את המרחק של צעד אחד, באמצעות Time.fixedDeltaTime:

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

void FixedUpdate()
{
    if (rb.position.y < top)
    {
        rb.MovePosition(rb.position + Vector3.up * lift * Time.fixedDeltaTime);
    }
}

למה לא להגדיר את transform.position? כך מעבירים את העצם למקום אחר באופן מיידי, והפיזיקה לא לומדת שהוא זז: ארגז על פלטפורמה מחליקה יישאר מאחור במקום לנוע יחד איתה. MovePosition מודיעה לפיזיקה שהגוף עבר למיקום החדש במהלך הצעד, כך שמה שהוא נוגע בו נישא ונדחף כראוי. ל־AddForce אין השפעה על גוף קינמטי, וגופים קינמטיים לעולם אינם מתנגשים במתנגשים סטטיים או זה בזה: רק גופים דינמיים מתנגשים בהם.

challenge icon

אתגר

קל

הדוברה תלויה מעל הלבה, והחצים אמורים להזיז אותה שמאלה וימינה לאורך ציר x במהירות של speed מ׳/ש׳ (2 בחלון Inspector). כרגע ה־Rigidbody שלה רגיל, ולכן היא נופלת ללבה.

  • כשהמשחק מתחיל, הפוך את הדוברה לקינמטית, כך שתישאר תלויה באוויר ושום דבר שפוגע בה לא יוכל לדחוף אותה.
  • הזז אותה באמצעות MovePosition בתוך FixedUpdate(), תוך שימוש בציר Horizontal הגולמי.

לחץ על Play והזז את הדוברה, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class Barge : MonoBehaviour
{
    public float speed = 2f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        // הפוך את הדוברה לקינמטית
    }

    void FixedUpdate()
    {
        // הזז אותה לאורך ציר x באמצעות החצים
    }
}
quiz iconבחנו את עצמכם

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

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