Menu
CoddyTech

מעקב חלק

חלק מהיחידה פיזיקה ומשחקיות במסלול ה-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, ולכן אין להכפיל בו שום דבר בקריאה.

challenge icon

אתגר

בינוני

המצלמה משקיפה על השחקן מגובה קבוע. גרמו לה לעקוב אחריו בצורה חלקה בעזרת 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), בגובה קבוע.
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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