פלטפורמות נעות
חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 49 מתוך 56.
אתגר
בינוניהפלטפורמה הכחולה צריכה לנוע הלוך ושוב מעל הפער. השאר הכול כפי שהיה בשיעור הקודם.
השלימו את MovingPlatform:
- שדות שה-Inspector מגדיר,
distance(3) ו-speed(1.5), וגםpublic Vector3 delta. - היא נעה מהמקום שבו היא מתחילה לאורך +x למרחק
distanceיחידות במהירות שלspeedיחידות לשנייה, ואז חוזרת לנקודת ההתחלה, וכך הלאה לנצח. - בכל פריים,
deltaהוא המרחק שהיא נעה באותו פריים: המיקום שלה אחרי התנועה פחות המיקום שלה לפניה.
CharacterController אינו נישא על ידי המשטח שעליו הוא עומד: על פלטפורמה נעה הוא נשאר במקומו, והפלטפורמה מחליקה מתחתיו. גם הזזה של transform.position שלו לא תעבוד: הקריאה הבאה ל-Move של הבקר מתחילה מהמקום שבו הפיזיקה ראתה אותו בפעם האחרונה, ומבטלת את השינוי. גרמו ל-Player לנוע יחד איתה:
- הוסיפו את
OnControllerColliderHit. כשהנורמל של הפגיעה פונה כלפי מעלה (hit.normal.yגדול מ-0.5: השחקן עומד עליה) ולאובייקט ישMovingPlatform, שמרו את הפלטפורמה בשדה. - ב-
Update, הוסיפו אתdeltaשל הפלטפורמה לתנועה שמועברת אלcontroller.Move, ואז שכחו את הפלטפורמה (הגדירו את השדה ל-null). הקריאה ל-Moveתמצא אותה שוב כל עוד השחקן עומד עליה.
לחצו על Play, קפצו אל הפלטפורמה וסעו עליה, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class MovingPlatform : MonoBehaviour
{
// בשיעור מאוחר יותר נוסיף כאן את המימוש: פלטפורמה שנעה הלוך ושוב.
}
כל השיעורים ביחידה בונים משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעות