Menu
CoddyTech

مناطق القتل

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 19 من 71.

منطقة الموت هي مُحفِّز موضوع فوق مكان يجب ألا يصل إليه اللاعب: الحمم البركانية أو الأشواك أو الفراغ أسفل المستوى. يؤدي دخولها إلى إعادة اللاعب إلى نقطة ظهور. هنا، يتولى ذلك السكربت الخاص بالحمم البركانية نفسها، مع ضبط نقطة الظهور في حقل Transform في نافذة Inspector:

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 وحدات في الثانية يصل إلى نقطة الظهور وهو لا يزال يسقط بالسرعة نفسها، واللاعب الذي اندفع إلى الحمم البركانية يواصل الاندفاع عائدًا إليها مباشرة. ضبط 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: العودة إلى ذلك المكان دون حركة.
}

جميع دروس الفيزياء وأسلوب اللعب

تدرّب بنفسك: Playground لـ Unity