קפיצה באמצעות מתקף
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 3 מתוך 63.
המתודה AddForce מקבלת ארגומנט שני, ForceMode, שמציין כיצד להשתמש בווקטור. בלעדיו מתקבל ForceMode.Force, דחיפה שנמשכת צעד פיזיקה אחד, ולכן צריך להוסיף אותה צעד אחר צעד. בעיטה, קפיצה או פיצוץ מתרחשים בבת אחת, וזהו ForceMode.Impulse: הדחיפה כולה בבת אחת, שמשנה את המהירות בגודל הדחף חלקי המסה.
כדורגל זה (0.5 ק״ג) נבעט בלחיצה. המהירות שלו קופצת ב־(0, 2, 6) / 0.5 = (0, 4, 12) m/s בצעד הפיזיקה הבא, ואז כוח הכבידה והדשא משפיעים עליו:
void Update()
{
if (Input.GetMouseButtonDown(0))
{
rb.AddForce(new Vector3(0, 2, 6), ForceMode.Impulse);
}
}אפשר לקרוא לדחיפה חד־פעמית מתוך Update(), בפריים שבו מתרחשת הלחיצה: Unity שומרת אותה ומחילה אותה בצעד הפיזיקה הבא. ארבעת המצבים נבדלים בשני היבטים: האם הדחיפה מתרחשת בבת אחת או לאורך צעד, והאם היא מושפעת מהמסה:
Force: לאורך צעד, מחולקת במסה (מנועים, רוח).Acceleration: לאורך צעד, ללא התחשבות במסה.Impulse: כולה בבת אחת, מחולקת במסה (בעיטות, קפיצות).VelocityChange: כולה בבת אחת, ללא התחשבות במסה: הווקטור מתווסף ישירות למהירות.
אתגר
קלגרמו לצפרדע לקפוץ. כל לחיצה על מקש הרווח מעניקה לה דחיפה אחת כלפי מעלה בעוצמה של jumpImpulse (10 ב-Inspector). משקל הצפרדע הוא 2 ק״ג, והקפיצה חייבת להתחשב במסה שלה: צפרדע כבדה יותר קופצת נמוך יותר.
החזקת מקש הרווח לחוץ עדיין נחשבת לקפיצה אחת. לחצו על Play וקפצו, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class FrogJump : MonoBehaviour
{
public float jumpImpulse = 10f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
// Space: דחיפה אחת כלפי מעלה בעוצמה של jumpImpulse
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף