Menu
CoddyTech

קפיצה באמצעות מתקף

חלק מהיחידה פיזיקה ומשחקיות במסלול ה-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: בבת אחת, ללא התחשבות במסה: הווקטור מתווסף ישירות למהירות.
challenge icon

אתגר

קל

גרמו לצפרדע לקפוץ פעם אחת בכל לחיצה על מקש הרווח.

  1. מתחת להערה, כתבו if (Input.GetKeyDown(KeyCode.Space)).
  2. בתוך התנאי, קראו ל־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
    }
}

כל השיעורים ביחידה פיזיקה ומשחקיות

תרגלו בעצמכם: Unity אונליין