Menu
CoddyTech
flag Ar iconالعربيةdown icon

الوقت غير المتدرّج

جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 35 من 56.

تحتاج اللعبة المتوقفة مؤقتًا أو البطيئة مع ذلك إلى ساعة حقيقية لبعض الأمور: قائمة إيقاف مؤقت تتحرك فيها الرسوم المتحركة، وعدّ تنازلي قبل استئناف اللعب، وتجميد يجب أن ينتهي من تلقاء نفسه. يمثّل Time.unscaledDeltaTime الوقت الحقيقي منذ الإطار الأخير، مهما كانت قيمة Time.timeScale، ويمثّل Time.unscaledTime الوقت الحقيقي منذ بدء اللعبة. تدير قائمة الإيقاف المؤقت هذه عجلة التحميل باستخدام الوقت الحقيقي، لذا تدور العجلة بينما تكون اللعبة متوقفة مؤقتًا:

void Update()
{
    wheel.Rotate(0f, 0f, -180f * Time.unscaledDeltaTime);   // نصف دورة في الثانية، سواء كانت اللعبة متوقفة مؤقتًا أم لا
}

للكوروتينات الزوج نفسه. يحسب WaitForSeconds وقت اللعبة، لذا عند Time.timeScale = 0 لا ينتهي أبدًا؛ أما WaitForSecondsRealtime فيحسب الثواني الحقيقية. يبدأ هذا الكوروتين عند فتح القائمة، ويجعل عنوان القائمة يومض كل نصف ثانية:

IEnumerator Blink()
{
    while (true)
    {
        title.SetActive(!title.activeSelf);
        yield return new WaitForSecondsRealtime(0.5f);
    }
}

استخدم القيم المُقاسة للعب، الذي ينبغي أن يتوقف عندما تتوقف اللعبة، واستخدم القيم غير المُقاسة لما يجب أن يستمر أثناء الإيقاف المؤقت أو الإبطاء: القوائم، والرسوم المتحركة فيها، والمؤقتات التي تنهي الإيقاف المؤقت. لا يوجد إصدار من Invoke يستخدم الوقت الحقيقي: فهو يحسب دائمًا وقت اللعبة.

challenge icon

التحدي

متوسط

تجعل وقفة الضربة الضربة القوية تبدو ثقيلة: تتجمد اللعبة بأكملها للحظة عند الاصطدام. تحرّك الأسهم أداة الإسقاط، ويُسقط مفتاح المسافة سندانًا منها (Dropper.cs، جاهز). اكتب Anvil.cs، الذي يحمله كل سندان:

  • عندما يصطدم السندان بأي شيء، جمّد اللعبة: Time.timeScale عند 0.
  • بعد freezeTime ثانية من الوقت الحقيقي (0.3 في نافذة Inspector)، أعد ضبطها إلى 1.

اضغط Play، وأسقط بضعة سَنادين، ثم اضغط Check.

جرّب بنفسك

using System.Collections;
using UnityEngine;

public class Anvil : MonoBehaviour
{
    public float freezeTime = 0.3f;

    // جمّد اللعبة لمدة freezeTime ثانية فعلية عندما يصطدم السندان بشيء ما
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس بناء ألعاب حقيقية