إطلاق النار
الدرس 9 من 25 في دورة لعبة Unity: الدفاع عن الأبراج على Coddy.
يطلق البرج Projectile نحو هدفه. تتحرك الطلقة نحوه باستخدام MoveTowards، وتتبع الهدف أثناء سيره، وتصيبه عند وصولها. لا تحتاج إلى معرفة أنها أصابت Enemy؛ بل تبحث عن IDamageable، وهي الواجهة التي تتيح لأي شيء تلقي الضرر، لذا يمكن إطلاق النار على أي شيء يطبّقها.
قد يموت الهدف بينما تكون الطلقة في الهواء. يُقارن كائن Unity المُدمَّر بأنه يساوي null، لذا تتحقق الطلقة أولًا مما إذا كان target == null، ثم تُدمّر نفسها.
في الوقت الحالي، يطلق البرج طلقة واحدة كل ثانية. ويحتفظ بوقت إطلاق الطلقة التالية:
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}التحدي
متوسطتُطلق الأبراج الأسهم مرة كل ثانية.
- تطبّق
EnemyالواجهةIDamageable: تُنقصTakeDamage(int amount)قيمةhealth، وتدمّر العدو عندما تصبح 0 أو أقل. Projectile: تحتفظLaunch(Transform target, int damage)بالقيمتين؛ وتتجهUpdateنحو الهدف بسرعةspeed، وتستدعيTakeDamage(damage)عند الوصول ثم تدمّر نفسها، وكذلك عندما يختفي الهدف.Tower: أضفpublic int damage = 2;و[SerializeField] private Projectile projectilePrefab;؛ وأطلق النار كما سبق منtransform.position + Vector3.up.
اضغط «العب»: تنطلق الأسهم ويسقط جنود Grunt. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
// سيأتي لاحقًا: مقذوف ينطلق من برج نحو هدفه.
public class Projectile : MonoBehaviour
{
}
جميع دروس لعبة Unity: الدفاع عن الأبراج
تدرّب بنفسك: Playground لـ Unity