מעקב חלק
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 47 מתוך 71.
מצלמה שמעתיקה את המיקום של השחקן בתוספת היסט בתוך 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 velocity;. - ב־
LateUpdate(), צורVector3 target = new Vector3(player.position.x, height, player.position.z - back);, כדי שקפיצה לא תזיז את התצוגה. - הגדר
transform.position = Vector3.SmoothDamp(transform.position, target, ref velocity, smoothTime);.
לחץ על „שחק”, רוץ וקפוץ: המצלמה משתרכת מעט מאחור, ולעולם אינה מתנדנדת. לאחר מכן לחץ על „בדיקה”.
נסו בעצמכם
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פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין