קפיצה באמצעות מתקף
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 3 מתוך 71.
המתודה AddForce מקבלת ארגומנט שני, ForceMode, שקובע איך להשתמש בווקטור. בלעדיו מתקבל ForceMode.Force, דחיפה שנמשכת צעד פיזיקה אחד, ולכן צריך להוסיף אותה צעד אחר צעד. בעיטה, קפיצה או פיצוץ מתרחשים בבת אחת, וזהו ForceMode.Impulse: כל הדחיפה בפעימה אחת, שמשנה את המהירות בגודל האימפולס חלקי המסה.
בועטים בכדורגל הזה (0.5 kg) בלחיצה. המהירות שלו קופצת ב-(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: בבת אחת, ללא התחשבות במסה: הווקטור מתווסף ישירות למהירות.
אתגר
קלגרמו לצפרדע לקפוץ פעם אחת בכל לחיצה על מקש הרווח.
- מתחת להערה, כתבו
if (Input.GetKeyDown(KeyCode.Space)). - בתוך התנאי, קראו ל־
rb.AddForce(Vector3.up * jumpImpulse, ForceMode.Impulse);, כדי שהצפרדע תספור 2 ק״ג.
לחצו על "שחק" ולחצו על מקש הרווח: הצפרדע תקפוץ למעלה ותיפול בחזרה. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
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פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין