גופים קינמטיים
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-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 אין השפעה על גוף קינמטי, וגופים קינמטיים לעולם אינם מתנגשים במתנגשים סטטיים או זה בזה: רק גופים דינמיים מתנגשים בהם.
אתגר
קלהדוברה תלויה מעל הלבה, והחצים אמורים להזיז אותה שמאלה וימינה לאורך ציר 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 באמצעות החצים
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף