القطرات
الدرس 14 من 19 في دورة لعبة 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، أضفfallSpeed = 3fوbottomY = -9f؛ وفيUpdate()، اجعل العنصر يسقط بسرعة fallSpeed في الثانية، ودمّره عندما يصبح أسفل bottomY. - في
GameManager، أضفpublic GameObject[] powerUps;وpublic float dropChance = 0.15f; - في BrickBroken، إذا تحقق الشرط
Random.value < dropChance، فأنشئ نسخة منpowerUps[Random.Range(0, powerUps.Length)]عند موضع الطوبة.
اضغط «العب» وكسّر الطوب: من حين لآخر، تسقط إحداها تعزيزًا (سنتناول التقاطه لاحقًا). ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// الفصل الأخير: التعزيزات التي تسقط من الطوب المحطّم.
}
جميع دروس لعبة Unity: كاسر الطوب
تدرّب بنفسك: Playground لـ Unity