להישבר בעת פגיעה
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 10 מתוך 63.
כמה חזקה הייתה הפגיעה? collision.relativeVelocity מציין כמה מהר שני העצמים התקרבו זה לזה ברגע שהם נפגשו, וה־magnitude שלו הוא מהירות הפגיעה במ׳/ש׳. זהו הפרש בין מהירויות: מכונית שנוסעת במהירות 10 מ׳/ש׳ ופוגעת במכונית שנוסעת באותו כיוון במהירות 8 מ׳/ש׳ פוגעת במהירות של 2 מ׳/ש׳ בלבד, ושתי המכוניות חוות את אותה מהירות פגיעה.
הביצה הזאת נשברת כשהיא נוחתת במהירות גבוהה מ־crackSpeed. כשמפילים אותה מגובה 1 m, היא פוגעת במהירות של כ־4.4 m/s (השורש הריבועי של 2 x 9.81 x 1), ומגובה 2 m במהירות של כ־6.3 m/s:
public float crackSpeed = 5f;
void OnCollisionEnter(Collision collision)
{
if (collision.relativeVelocity.magnitude > crackSpeed)
{
Debug.Log("Splat!");
Destroy(gameObject);
}
}למה לא להשתמש ב־rb.linearVelocity של הביצה? עד ש־OnCollisionEnter מופעלת, מערכת הפיזיקה כבר טיפלה בפגיעה, ולכן מהירות הביצה היא המהירות שנותרה אחריה, והיא קרובה לאפס. relativeVelocity שומרת את מהירות הפגיעה עצמה. זו מהירות, ולכן למסה אין השפעה: ביצה כבדה וביצה קלה שנוחתות במהירות של 6 m/s ידווחו שתיהן על אותה מהירות, 6.
אתגר
קלהכדור מתגלגל אל החלון: מקש החץ למעלה מגלגל אותו בעדינות, ומקש הרווח מגלגל אותו בעוצמה (Bowler.cs, כבר נכתב). כתבו את Window.cs. לחלון יש strength (10 בחלון Inspector).
- כל פגיעה מחלישה את החלון לפי מהירות הפגיעה שלה: פגיעה במהירות 2 m/s מפחיתה 2 מ-
strength. - כאשר
strengthמגיע ל-0 או פחות, החלון מתנפץ: השמידו את החלון.
לחצו על Play, גלגלו כמה כדורים בעדינות ואז אחד בעוצמה, ולאחר מכן לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class Window : MonoBehaviour
{
public float strength = 10f;
// כל פגיעה מפחיתה מ-strength את מהירות הפגיעה שלה; כשהערך מגיע ל-0, החלון מתנפץ
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף