مناطق القتل
جزء من قسم الفيزياء وأسلوب اللعب في رحلة 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 يجعله يصل ساكنًا. ويُبقي التحقق من الوسم أي شيء آخر يسقط في الحمم البركانية في مكانه.
التحدي
سهلاجعل اللاعب يعود إلى نقاط إعادة الظهور. هذا النص البرمجي موجود على اللاعب، لذا فهو يحرّك transform وbody، وليس other.
- في
Start()، عيّن الحقلVector3 respawnإلىtransform.position. - في
OnTriggerEnter(Collider other)، عندما يتحققother.CompareTag("Checkpoint")، عيّنrespawn = transform.position;. - عندما يتحقق
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: العودة إلى ذلك المكان دون حركة.
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity