الفصل 33 — المؤثرات والجسيمات والمؤقتات
الجزء 2B — محرك Flame · الفصل 33 من 62 · 8 ساعات
الفصل 33 — المؤثرات والجسيمات والمؤقتات
المستوى: متوسط المدة المقدّرة: 8 ساعات المتطلبات المسبقة: الفصول من 27 إلى 32 (تثبيت Flame، المكوّنات ودورة الحياة، السبرايتات، المدخلات، الكاميرا، التصادمات)، الفصل 26 (البنية والحالات)، الفصل 23 (المتجهات والسرعة)، الفصل 15 (البرمجة غير المتزامنة) إصدار Flame المستخدم: 1.38.0 ما ستتقنه في نهاية الفصل: تحويل مشهد من «Donjon de Dart» يعمل إلى مشهد ممتع في اللعب، بفضل المؤثرات والجسيمات والمؤقتات، دون استخدام ملف صورة واحد.
33.0 — أهداف الفصل
في نهاية هذا الفصل ستكون قادرًا على:
- شرح ما هو game feel (إحساس اللعب) ولماذا تُصيب اللعبة «الجافة» اللاعب بالملل في دقيقتين؛
- وصف آلية عمل المؤثر (effect) في Flame داخليًا: مكوّن يطبّق تقدّمًا؛
- استخدام
MoveEffect.by()وMoveEffect.to()والاختيار بينهما؛ - تحريك المقياس بواسطة
ScaleEffectوفهم الفرق بينه وبينSizeEffect؛ - تدوير مكوّن بواسطة
RotateEffectبالراديان، وتحريك نقطة الارتكاز بواسطةAnchorToEffect؛ - إظهار مكوّن وإخفائه بواسطة
OpacityEffect؛ - تلوين مكوّن بواسطة
ColorEffectومعرفة حدوده؛ - ضبط
EffectController:durationوreverseDurationوalternateوrepeatCountوinfiniteوstartDelay؛ - قراءة المخطط الزمني للمؤثر والتنبؤ بما سيظهر على الشاشة؛
- اختيار منحنى استيفاء يناسب القصد (
easeOutوelasticOutوbounceOut…)؛ - تسلسل المؤثرات بواسطة
SequenceEffectوتركيبها بالتوازي؛ - استخدام
onCompleteوremoveOnFinishدون تسرّب للمكوّنات؛ - برمجة الوميض الأبيض لعدو أُصيب والنبضة (pop) لعنصر تم التقاطه؛
- برمجة اهتزاز الشاشة بتطبيق مؤثر على
Viewfinder؛ - التمييز بين
ParticleوParticleSystemComponent؛ - استخدام
CircleParticleوSpriteParticleوComputedParticleوAcceleratedParticleوMovingParticle؛ - توليد رشقة جسيمات بواسطة
Particle.generate: انفجار عملات، غبار، شرر؛ - تقدير كلفة نظام الجسيمات وتقييدها؛
- استخدام فئة
Timerفي Flame وثنائيةupdate(dt)/onTickوTimerComponent؛ - جعل عدو يظهر كل ثلاث ثوانٍ؛
- تنفيذ فترة تهدئة (cooldown) للهجوم ومناعة مؤقتة مع وميض؛
- تجميع كل ذلك في مشهد قابل للّعب و«نابض بالحياة» من «Donjon de Dart».
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش