القطرات
الدرس 13 من 16 في دورة لعبة Unity: تحطيم الطوب على Coddy.
أحيانًا تُسقط الطوبة المكسورة تعزيزًا يسقط باتجاه المضرب. وما إذا كانت ستُسقطه أم لا يعتمد على سحب عشوائي: Random.value قيمة عائمة عشوائية من 0 إلى 1، لذا تكون Random.value < 0.15f صحيحة نحو 15 مرة من كل 100. يتيح وضع الاحتمال في حقل ضبطه، كما يتيح للاختبار تعيينه إلى 1 لإسقاط عنصر في كل مرة، أو إلى 0 لعدم إسقاط أي عنصر.
أما تحديد التعزيز الذي سيسقط فهو سحب عشوائي ثانٍ: فهرس عشوائي ضمن مصفوفة من النماذج الأولية. عند استخدام أعداد صحيحة مع Random.Range، لا تشمل النتيجة الحد الأقصى، لذا يمكن لـ Random.Range(0, array.Length) اختيار كل عنصر. غنائم عدو:
public GameObject[] loot;
public float lootChance = 0.25f;
void DropLoot()
{
if (Random.value >= lootChance) return;
int pick = Random.Range(0, loot.Length);
Instantiate(loot[pick], transform.position, Quaternion.identity);
}يسقط التعزيز بسرعة ثابتة عبر تحريك نفسه في كل إطار، ويدمّر نفسه بمجرد أن يصبح أسفل منطقة اللعب، كي لا تتراكم التعزيزات التي لم يلتقطها اللاعب. يحتوي نموذجه الأولي على مكوّن Rigidbody حركي ومصادم مُشغِّل، لذا تعرف الفيزياء أنه يتحرك، ويمكنه اكتشاف وصوله إلى المضرب.
التحدي
صعب- في
PowerUp، أضفpublic float fallSpeed = 3fوpublic float bottomY = -9f. فيUpdate()، حرّكه إلى الأسفل بسرعةfallSpeedوحدة في الثانية، ودمّر تعزيز القوة عندما يصبح إحداثي y الخاص به أقل منbottomY. - في
GameManager، أضفpublic GameObject[] powerUps(يربط المشهد بين الكائنات الجاهزة WidePowerUp وMultiPowerUp) وpublic float dropChance = 0.15f. - في
BrickBroken، أظهر واحدًا عشوائيًا منpowerUpsفي مكان الطوبة، باحتمالdropChance.
تعزيزات القوة تسقط عبر المضرب في الوقت الحالي: سنضيف التقاطها لاحقًا.
اضغط على Play، وحطّم الطوب حتى يسقط أحدها، ثم اضغط على Check.
جرّب بنفسك
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// الفصل الأخير: عناصر تعزيز القوة التي تسقط من الطوب المحطّم.
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.