לנוע לעבר נקודה
חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 35 מתוך 85.
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.
- הוסיפו שדות
bool flying;ו-bool landed;. בעתInput.GetKeyDown(KeyCode.Space), הגדירוflying = true;. - כל עוד
flying && !landed, הזיזו באמצעותVector3.MoveTowards(transform.position, pad, speed * Time.deltaTime). - כאשר
transform.position == pad, הגדירו אתlandedורשמו ביומן את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יסודות C# ב-Unity
שלום, Unityמשתניםמספרים עשרוניים צריכים fטקסט ב-Consoleמשתנים ששומרים ערכיםאם ואחרתהשוואת מספריםחזרה: אוסף המטבעות5וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן8אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהחזרה: מתג תאורה6טרנספורמציות והיררכיה
הורים וילדיםלהניף את הדגלקנה מידהלהסתכל על דבריםלנוע לעבר נקודהסיכום: הירח המקיף12מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: יומן מחזור החייםתרגלו בעצמכם: Unity אונליין