לנוע לעבר נקודה
חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 27 מתוך 67.
Vector3.MoveTowards(current, target, maxStep) מחזירה נקודה שקרובה יותר ל-target במרחק של עד maxStep. כשהמטרה קרובה יותר מכך, היא מחזירה את המטרה עצמה, ולכן לעולם אינה חורגת ממנה. כשמשתמשים ב-speed * Time.deltaTime כצעד, אובייקט נע במהירות קבועה ועוצר בדיוק על המטרה. רכבל זה גולש לתחנה שלו במהירות של 2 יחידות לשנייה:
public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}לאחר שהוא מגיע, כל קריאה מאוחרת יותר מחזירה שוב את station, ולכן הרכבל נשאר במקומו, והביטוי transform.position == station הוא true. עבור מספר יחיד, Mathf.MoveTowards פועלת באותו אופן.
Vector3.Lerp(a, b, t) היא הנקודה שנמצאת במרחק של חלק t מהדרך מ-a ל-b: כאשר t = 0.5 היא נמצאת באמצע הדרך. כאשר כותבים Lerp(transform.position, station, 2f * Time.deltaTime) בתוך Update(), היא עוברת בכל פריים חלק מהמרחק הנותר: מהר בהתחלה, ואז לאט יותר ויותר ככל שמתקרבים לסוף, ומתקרבת בהדרגה במקום להגיע במהירות קבועה. השתמשו ב-MoveTowards כשאובייקט חייב לנוע במהירות קבועה ולעצור בדיוק; השתמשו בדפוס Lerp הזה להאטה הדרגתית.
אתגר
בינוניהרחפן ממתין באוויר עד שתלחץ על Space. מרגע זה הוא טס בקו ישר אל pad, מיקום משטח הנחיתה, במהירות של speed יחידות לשנייה, ונוחת עליו בדיוק. כשהוא נוחת, הוא רושם Landed פעם אחת, ולא שוב בכל פריים לאחר מכן.
לחץ על הפעל, לחץ על Space, ואז לחץ על בדוק.
נסו בעצמכם
using UnityEngine;
public class Drone : MonoBehaviour
{
public Vector3 pad = new Vector3(0, 0.25f, 0);
public float speed = 2f;
void Update()
{
// אחרי Space: טוס אל pad במהירות speed, ורשום Landed פעם אחת עם ההגעה
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות התכנות ב-Unity
1הסקריפט הראשון שלך
שלום, Unityהצב את הקובייהזוז בכל פרייםהסתובב בכל שנייהנווט בעזרת המקשיםסיכום: נהג בקובייה4וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן10מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: מתעד מחזור החיים