Menu
CoddyTech
flag Ar iconالعربيةdown icon

ماذا اصطدمتُ به؟

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

يصف Collision الذي تمرّره Unity الجانب الآخر من التلامس. 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) يزيل الكائن الذي اصطدمت به.

challenge icon

التحدي

سهل

قد السيارة الكاسحة للثلوج باستخدام الأسهم (المكتوبة مسبقًا) وأعطها مهمة. الكتلتان البيضاوان تحملان الوسم Snow.

  • عندما تصطدم الكاسحة بجسم يحمل الوسم Snow، دمّر تلك الكتلة، وأضف 1 إلى العدد وسجّله: Cleared 1، Cleared 2.
  • كل ما تلمسه الكاسحة غير ذلك، بما في ذلك الأرض والجدار، يبقى في مكانه.

اضغط على Play وأخلِ الطريق، ثم اضغط على Check.

جرّب بنفسك

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);
    }

    // الثلج الذي تصطدم به كاسحة الثلج: دمّره، واحسبه، وسجّل العدد
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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