מעקב חלק
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 45 מתוך 63.
מצלמה שמעתיקה את מיקום השחקן בתוספת היסט ב־LateUpdate() הופכת כל טלטלה של השחקן לטלטלה של התצוגה. Vector3.SmoothDamp(current, target, ref velocity, smoothTime) מחזירה מיקום שנע לעבר target כמו קפיץ מרוסן: היא מאיצה, מאטה כשהיא מתקרבת ליעד ומגיעה אליו בלי לחרוג ממנו. המצלמה הזאת עוקבת אחרי השחקן ממרחק של 3 יחידות למעלה ו־6 מאחור, באיחור קל:
public Transform player;
public Vector3 offset = new Vector3(0, 3, -6);
public float smoothTime = 0.3f;
Vector3 velocity;
void LateUpdate()
{
Vector3 target = player.position + offset;
transform.position = Vector3.SmoothDamp(transform.position, target, ref velocity, smoothTime);
}ref מעביר ל־SmoothDamp את המשתנה עצמו במקום עותק שלו, כך שהמתודה יכולה לשנות אותו. SmoothDamp שומרת את המהירות הנוכחית של המצלמה, בכל שלושת הצירים, בתוך velocity וזקוקה לה שוב בפריים הבא, ולכן זהו שדה. אם המשתנה היה מוכרז בתוך LateUpdate(), הוא היה מתחיל מאפס בכל פריים והמצלמה הייתה זוחלת, בערך חצי אחוז מהדרך בכל פריים. עבור מספר יחיד, כמו זום של מצלמה, Mathf.SmoothDamp פועלת באותו אופן עם מהירות מסוג float.
smoothTime קובע עד כמה המצלמה מפגרת: עם 0.3, היא מכסה כ־60% מקפיצה פתאומית בתוך 0.3 שניות וכמעט מגיעה ליעד לאחר שנייה אחת. ערך קטן יותר גורם לה לעקוב באופן צמוד יותר. SmoothDamp קוראת בעצמה את Time.deltaTime, ולכן אין להכפיל בו שום דבר בקריאה.
אתגר
בינוניהמצלמה משקיפה על השחקן מגובה קבוע. גרמו לה לעקוב אחריו בצורה חלקה בעזרת Vector3.SmoothDamp ו-smoothTime (0.25), תוך התקרבות בהדרגה למיקום הזה:
- x: ערך ה-x של השחקן;
- z: במרחק
back(5) יחידות מאחורי השחקן, לכיוון -z; - y: תמיד
height(12), בלי קשר לגובה של השחקן עצמו. מקש הרווח גורם לשחקן לקפוץ, והמצלמה לא אמורה לנוע מעלה ומטה.
לחצו על Play, רוצו וקפצו, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class TopDownCamera : MonoBehaviour
{
public Transform player;
public float height = 12f;
public float back = 5f;
public float smoothTime = 0.25f;
void LateUpdate()
{
// נועו בהדרגה לעבר הנקודה שמעל השחקן (x), במרחק back יחידות מאחוריו (z), בגובה קבוע.
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף