Menu
CoddyTech

אזורי הרג

חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 19 מתוך 71.

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

public Transform spawnPoint;

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        other.transform.position = spawnPoint.position;
        other.attachedRigidbody.linearVelocity = Vector3.zero;
    }
}

other.attachedRigidbody הוא ה-Rigidbody שאליו שייך המתנגש שנכנס. הגדרת transform.position משגרת את השחקן, וזה מה שתחייה מחדש דורשת. עם זאת, Rigidbody שומר על המהירות שלו לאורך הקפיצה: שחקן שנפל במהירות של 10 יחידות לשנייה מגיע לנקודת ההופעה ועדיין נופל במהירות של 10, ושחקן שרץ לתוך הלבה ממשיך לרוץ היישר בחזרה אליה. הגדרת linearVelocity ל-Vector3.zero גורמת לו להגיע בעמידה במקום. בדיקת התג משאירה כל דבר אחר שנופל לתוך הלבה במקומו.

challenge icon

אתגר

קל

אפשר לשחקן להופיע מחדש. הסקריפט הזה נמצא על השחקן, ולכן הוא מזיז את transform ואת body, ולא את other.

  1. ב־Start(), הגדר את השדה Vector3 respawn לערך transform.position.
  2. ב־OnTriggerEnter(Collider other), כאשר other.CompareTag("Checkpoint"), הגדר את respawn = transform.position;.
  3. כאשר other.CompareTag("KillZone"), הגדר את transform.position = respawn; ואת body.linearVelocity = Vector3.zero;.

לחץ על "שחק" וצעד מהגשר. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class Player : MonoBehaviour
{
    public float force = 12f;
    Rigidbody body;
    Vector3 input;
    // respawn: המקום שאליו השחקן חוזר

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void Update()
    {
        input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
    }

    void FixedUpdate()
    {
        body.AddForce(input * force);
    }

    // Checkpoint: לזכור איפה השחקן נמצא. KillZone: לחזור למקום הזה ולעמוד בלי לזוז.
}

כל השיעורים ביחידה פיזיקה ומשחקיות

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