גופים קינמטיים
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 6 מתוך 71.
פלטפורמות נעות, מעליות ודלתות צריכות להתנגש כמו עצמים מוצקים, אבל אסור להן ליפול או להידחף ממקומן בגלל כל דבר שנוחת עליהן. זהו גוף קינמטי: מגדירים 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 אין השפעה על גוף קינמטי, וגופים קינמטיים לעולם לא מתנגשים במתנגשים סטטיים או זה בזה: רק גופים דינמיים נתקלים בהם.
אתגר
קלתלו את הדוברה מעל הלבה והחליקו אותה באמצעות החצים.
- ב־
Start(), הגדירוrb.isKinematic = true;. - ב־
FixedUpdate(), קראו אתfloat h = Input.GetAxisRaw("Horizontal");וקראו ל־rb.MovePosition(rb.position + Vector3.right * h * speed * Time.fixedDeltaTime);.
לחצו על "שחק" והחליקו אותה: הדוברה תלויה באוויר, והרחפן ניתז ממנה. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
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פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין