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

بناء القواعد

الدرس 5 من 18 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.

يبني اللاعب الأبراج بالنقر على منصات البناء، وهي المربعات الرمادية بجانب المسار. يحدث النقر على الشاشة، بالبكسلات، بينما توجد المنصات في العالم ثلاثي الأبعاد، لذا يتحول النقر إلى شعاع. تعيد Camera.main.ScreenPointToRay(point) الشعاع الذي يبدأ من الكاميرا ويمر عبر نقطة الشاشة تلك إلى المشهد، وتتتبعه Physics.Raycast وتُبلغ عن أول مُصادم يصطدم به: أي ذلك الذي يراه اللاعب أسفل مؤشر الفأرة. أداة طلاء تلوّن الكتلة التي تنقر عليها:

void Update()
{
    if (!Mouse.current.leftButton.wasPressedThisFrame)
    {
        return;
    }

    Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
    if (Physics.Raycast(ray, out RaycastHit hit) && hit.collider.TryGetComponent(out Paintable block))
    {
        block.Paint(brushColor);
    }
}

لا يُنفَّذ النصف الثاني من && إلا عندما يصطدم الشعاع بشيء ما، لذا تكون قيمة hit قد عُيّنت. بعد ذلك، يتحقق TryGetComponent مما إذا كان الشيء الذي اصطدم به الشعاع هو الشيء الذي تهتم به: فالشعاع يصطدم أيضًا بالأرض والمسار والأشجار، التي لا تحتوي على Paintable، لذا لا تفعل تلك النقرات شيئًا.

يستخدم كل مشهد هنا نظام الإدخال في Unity 6 فقط، لذا تقرأ Mouse.current الفأرة. يكون موضعها بالبكسلات على الشاشة، وهذا ما تتوقعه ScreenPointToRay.

challenge icon

التحدي

متوسط

تحتوي منصّات البناء على سكربت BuildPad، ويحتوي كائن اللعبة على BuildManager الذي يكون فيه towerPrefab هو العنصر الجاهز ArrowTower.

  1. في BuildPad.cs، أضف حقلًا عامًا tower من النوع Tower: البرج المبني على هذه المنصّة، أو null.
  2. في BuildManager، أضف حقلًا خاصًا مُسلسلًا towerPrefab (من النوع Tower). في Update، عندما يُضغط زر الفأرة الأيسر في هذا الإطار، أطلق شعاعًا من الكاميرا عبر موضع الفأرة.
  3. عندما يصيب الشعاع مُصادمًا يحتوي على BuildPad، ولا يكون على تلك المنصّة برج بعد، أنشئ نسخة من towerPrefab عند موضع المنصّة وخزّن البرج الجديد في tower الخاص بالمنصّة. إذا كانت المنصّة تحتوي على برج، أو كان الشيء المصاب ليس منصّة، فلن يحدث شيء.

اضغط Play وانقر على بعض المنصّات، ثم اضغط Check.

جرّب بنفسك

using UnityEngine;

// يأتي لاحقًا: النقر على منصات البناء لوضع الأبراج، والمتجر ولوحة الأبراج.
public class BuildManager : MonoBehaviour
{
}
quiz iconاختبر نفسك

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

جميع دروس لعبة Unity: الدفاع عن الأبراج