Menu
CoddyTech

שלושה מסלולים

שיעור 1 מתוך 20 בקורס משחק Unity: נתיבי שמיים של Coddy.

בקורס הזה תבנו משחק שלם, תכונה אחת בכל שיעור. דמות רצה לאורך כביש גבוה בשמיים. מחסומים, מוטות וקירות מופיעים בדרכה, מטבעות פזורים בנתיבים, והכביש נעשה מהיר יותר ככל שמצליחים לשרוד זמן רב יותר.

בפרויקט כבר יש ארבעה סקריפטים: Runner על השחקן, Road, GameManager ו-Coin. רובם ריקים כרגע ומתמלאים משיעור לשיעור. סקריפט חמישי, CameraFit שעל המצלמה, כבר מוכן: הוא מרחיב את שדה הראייה במסך של טלפון גבוה, כך שכל שלושת הנתיבים נכנסים לתמונה, ולא תצטרכו לשנות אותו.

הדמות לעולם אינה נעה קדימה. היא נעה רק בין שלושה נתיבים: שמאלי, אמצעי וימני. שמרו את הנתיב כמספר שלם, ‎-1, 0 או 1, וחשבו היכן הוא נמצא בציר x:

float targetX = lane * laneWidth;

לדמות יש CharacterController, ולכן היא נעה באמצעות controller.Move(motion): ‏Move מקבל את המרחק שיש לעבור בפריים הזה, ולא את המקום שאליו צריך להגיע. כדי להגיע ל-targetX, עברו את ההפרש בינו לבין המקום שבו הדמות נמצאת עכשיו:

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1) מחזיר את lane - 1, אך לעולם לא ערך קטן מ-‎-1, ולכן אין נתיב מעבר לנתיב השמאלי.

challenge icon

אתגר

קל
  1. ב־Runner.Update, כשלוחצים על A או על החץ שמאלה (Input.GetKeyDown), יש להגדיר lane = Mathf.Max(-1, lane - 1).
  2. כשלוחצים על D או על החץ ימינה, יש להגדיר lane = Mathf.Min(1, lane + 1).
  3. לאחר מכן חשבו את targetX והזיזו לשם את הרץ באמצעות controller.Move, כפי שמוצג למעלה.
  4. לחצו על "שחק" ונסו את A ואת D.

נסו בעצמכם

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // החלף נתיבים כאן
    }
}

כל השיעורים ביחידה משחק Unity: נתיבי שמיים

תרגלו בעצמכם: Unity אונליין