הדיפה לאחור
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 54 מתוך 63.
הדיפה היא בעיטה הרחק ממה שפגע בך: דחף אחד לאורך הקו שבין הפוגע לנפגע. הפגוש הזה מדף כל דבר שמתנגש בו:
[SerializeField] private float power = 8f;
void OnCollisionEnter(Collision collision)
{
Vector3 away = collision.transform.position - transform.position;
away.y = 0f;
collision.rigidbody.AddForce(away.normalized * power, ForceMode.Impulse);
}collision.transform.position - transform.position מצביע מהפגוש אל הדבר שפגע בו. ערך ה-y שלו מוגדר ל-0 כדי שהבעיטה תישאר אופקית, ו-normalized הופך אותו לווקטור באותו גודל, בלי קשר למרחק בין שני המרכזים. ForceMode.Impulse היא בעיטה חד-פעמית: היא משנה את המהירות ב-power חלקי המסה, בבת אחת, כך שכדור שמסתו 2 יעוף במהירות חצי מזו של כדור שמסתו 1. ברירת המחדל, ForceMode.Force, מיועדת להפעלה בכל צעד ונותנת השפעה של צעד אחד, קטנה פי 50.
הבעיטה נמשכת רק כל עוד שום דבר לא מחליף את המהירות. שחקן שה-FixedUpdate שלו מגדיר את rb.linearVelocity לפי החצים בכל צעד מאבד אותה כעבור צעד אחד, ולכן סקריפט כזה צריך להשאיר את המהירות ללא שינוי לרגע אחרי פגיעה, או להזיז את השחקן באמצעות כוחות.
אתגר
בינוניהשחקן יכול להפעיל גל הלם. כתבו את הסקריפט Shockwave עבור השחקן. המפקח מגדיר לו radius (4), power (6) ו-lift (2). הסקריפט Player מוכן: החצים מזיזים את השחקן.
- כשלוחצים על Space, מצאו כל Collider שנמצא בתוך
radiusמהשחקן באמצעותPhysics.OverlapSphere. - כל אחד מהם שיש לו Rigidbody, למעט השחקן עצמו, מקבל דחף:
powerהרחק מהשחקן לאורך הקרקע, בתוספתliftכלפי מעלה. - מתעלמים מ-Collider-ים ללא Rigidbody, כמו הקרקע.
לחצו על Play, לכו בין הארגזים ולחצו על Space, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class Shockwave : MonoBehaviour
{
[SerializeField] private float radius = 4f;
[SerializeField] private float power = 6f;
[SerializeField] private float lift = 2f;
void Update()
{
// בלחיצה על Space: להרחיק מהשחקן כל Rigidbody שנמצא בטווח radius
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף