الحركة البطيئة
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 35 من 60.
تُعدّ قيمة Time.timeScale بين 0 و1 حركةً بطيئة. عند 0.25، تكون قيمة Time.deltaTime ربع زمن الإطار الفعلي، لذا تقطع سيارة تتحرك باستخدام speed * Time.deltaTime ربع المسافة في كل ثانية فعلية، وتتحرك الأجسام الصلبة وتسقط بسرعة ربع سرعتها، وتستمر WaitForSeconds(1f) لمدة 4 ثوانٍ فعلية. عندما تكون القيمة أكبر من 1، تعمل اللعبة بسرعة: القيمة 2 تعني ضعف السرعة.
تحتاج الفيزياء إلى سطر إضافي. تظل كل خطوة فيزيائية تقدّم اللعبة بمقدار Time.fixedDeltaTime، أي 0.02 ثانية من وقت اللعبة، وعند 0.25 تستغرق هذه الخطوات 0.08 ثانية فعلية: لا تُنفّذ FixedUpdate() إلا 12.5 مرة في الثانية الفعلية، لذا تتحرك الأجسام إطارًا واحدًا من كل خمسة إطارات وتتقطع حركتها. قلّص مدة الخطوة بالعامل نفسه، ثم أعد القيمتين إلى ما كانتا عليه بعد ذلك، لأن Unity لا يعيد ضبط fixedDeltaTime تلقائيًا أبدًا. يبطئ هذا السكربت اللعبة ما دمت تضغط على Space:
float normalStep;
void Awake()
{
normalStep = Time.fixedDeltaTime; // 0.02 في مشروع جديد
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Time.timeScale = 0.25f;
Time.fixedDeltaTime = normalStep * Time.timeScale;
}
if (Input.GetKeyUp(KeyCode.Space))
{
Time.timeScale = 1f;
Time.fixedDeltaTime = normalStep;
}
}مع الخطوة الأقصر، تظل الفيزياء تنفّذ 50 خطوة في الثانية الفعلية، وتغطي كل خطوة ربع وقت اللعبة، لذا تبقى الحركة البطيئة سلسة. تُقاس الخطوة بثواني اللعبة، لذا يستمر عمل الشيفرة في FixedUpdate() التي تستخدم Time.deltaTime دون تغيير.
التحدي
متوسطالعب رحلة المذنب عبر SlowZone بالحركة البطيئة.
- في
SlowZone.cs، اكتبvoid OnTriggerEnter(Collider other): عيّنTime.timeScaleإلىslowScaleوTime.fixedDeltaTimeإلى0.02f * slowScale. - اكتب
void OnTriggerExit(Collider other): أعدهما إلى1fو0.02f.
اضغط على «العب» ومفتاح المسافة: ينزلق المذنب عبر المنطقة بسرعة 0.4. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class SlowZone : MonoBehaviour
{
public float slowScale = 0.4f;
// حركة بطيئة ما دام هناك شيء داخل المنطقة
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity