ماذا اصطدمتُ به؟
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 9 من 71.
يصف Collision الذي تمرّره Unity إلى OnCollisionEnter الجانب الآخر من التلامس. يشير collision.gameObject إلى الكائن الذي اصطدمت به، لذا فإن collision.gameObject.name هو اسمه، أما collision.gameObject.CompareTag("Hazard") فيتحقق من وسمه. (collision.collider هو المصادم المحدد الذي لمسته، عندما يكون للكائن عدة مصادمات.)
تسجّل سيارة التصادم هذه كل ما تصطدم به، وتشتكي من المخاطر:
void OnCollisionEnter(Collision collision)
{
Debug.Log("Bumped into " + collision.gameObject.name);
if (collision.gameObject.CompareTag("Hazard"))
{
Debug.Log("Ouch!");
}
}أول سطر تسجّله هو Bumped into Floor، عند بدء اللعبة: فالأرضية التي تقف عليها تُعدّ تصادمًا أيضًا. لذا فإن البرنامج النصي الذي يتفاعل مع الاصطدامات يتحقق دائمًا مما اصطدم به أولًا. انتبه إلى الكائن الذي تشير إليه: إن استخدام CompareTag("Hazard") وحده يتحقق من وسم كائنك، وDestroy(gameObject) يدمّر كائنك، بينما يزيل Destroy(collision.gameObject) الكائن الذي اصطدمت به.
التحدي
سهلأعطِ كاسحة الثلج مهمة: إزالة الكتل الموسومة بـ Snow.
- أضف
void OnCollisionEnter(Collision collision)إلىPlow، بحيث لا يعمل إلا عندما يتحققcollision.gameObject.CompareTag("Snow"). - داخلها، نفّذ
Destroy(collision.gameObject);، وأضف 1 إلى حقلclearedوسجّل"Cleared " + cleared.
اضغط على «العب» وقُد نحو الثلج: ستختفي كل كتلة، وسيحصيها Console. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class Plow : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
private int cleared;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, 0);
}
// الثلج الذي تصطدم به كاسحة الثلج: دمّره، واحسب عدد القطع التي أُزيلت، وسجّل العدد
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity