Menu
CoddyTech

תפסו שדרוג

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

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

enum נותן שמות לסוגים, וכל קדם־מופע מגדיר את הסוג שלו ב־Inspector, כך שסקריפט אחד משמש את שניהם:

public enum Kind { Wide, Multiball }
public Kind kind;

if (kind == Kind.Multiball) Debug.Log("Three balls");

other.GetComponent<Paddle>() מוצא את סקריפט Paddle על האובייקט שבו נגע השדרוג. כרגע, האפשרות להרחיב רק מציגה הודעה ביומן; בשיעור הבא המחבט יגדל.

challenge icon

אתגר

קשה

תפסו שדרוג נופל באמצעות המשטח.

  1. ב־PowerUp, הוסיפו public enum Kind { Wide, Multiball } ואת public Kind kind; (כל קדם־ייצור מגדיר את הסוג שלו).
  2. הוסיפו OnTriggerEnter(Collider other): חזרו מהפונקציה אלא אם כן other.CompareTag("Paddle"); שדרוג מסוג Wide קורא ל־other.GetComponent<Paddle>().Widen();, ואז ל־Destroy(gameObject);
  3. ב־Paddle, הוסיפו public void Widen() שמתעד ביומן את Wide paddle בינתיים.

לחצו על ״שחק״ ותפסו שדרוג ירוק: הוא נעלם וב־Console מופיע Wide paddle. לאחר מכן לחצו על ״בדיקה״.

נסו בעצמכם

using UnityEngine;
using UnityEngine.InputSystem;

public class Paddle : MonoBehaviour
{
    public float speed = 14f;
    public float wallX = 8f;   // הצדדים הפנימיים של הקירות הצדדיים נמצאים ב־‎-wallX וב־wallX

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        float input = 0f;
        if (Keyboard.current.leftArrowKey.isPressed || Keyboard.current.aKey.isPressed) input -= 1f;
        if (Keyboard.current.rightArrowKey.isPressed || Keyboard.current.dKey.isPressed) input += 1f;

        Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
        float halfWidth = transform.localScale.x / 2f;
        target.x = Mathf.Clamp(target.x, -wallX + halfWidth, wallX - halfWidth);
        rb.MovePosition(target);
    }
}

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

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