تم الضغط عليه في هذا الإطار
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 46 من 60.
تجيب isPressed عن سؤال «هل هو مضغوط الآن؟» في كل إطار أثناء الضغط المستمر. ولتنفيذ شيء مرة واحدة عند كل ضغطة، يوفّر عنصر التحكم إجابتين إضافيتين: تكون wasPressedThisFrame مساوية لـ true فقط في الإطار الذي يُضغط فيه المفتاح أو الزر، وتكون wasReleasedThisFrame كذلك فقط في الإطار الذي يُرفع فيه. وهما تحلّان محل Input.GetKeyDown وInput.GetKeyUp، وكذلك GetMouseButtonDown وGetMouseButtonUp. ينخفض هذا الختم المطاطي عند الضغط على زر الفأرة، ويرتفع عند إفلاته:
using UnityEngine;
using UnityEngine.InputSystem;
public class Stamp : MonoBehaviour
{
public float drop = 0.5f;
private int stamps;
void Update()
{
Mouse mouse = Mouse.current;
if (mouse.leftButton.wasPressedThisFrame)
{
transform.position += Vector3.down * drop;
stamps++;
Debug.Log("Stamp " + stamps);
}
if (mouse.leftButton.wasReleasedThisFrame)
{
transform.position += Vector3.up * drop;
}
}
}تُسجّل ضغطة مستمرة لمدة نصف ثانية Stamp 1 مرة واحدة، وتحرك الختم إلى الأسفل مرة واحدة ثم تعيده إلى الأعلى مرة واحدة. أما باستخدام isPressed في عبارة if الأولى، فستُسجّل الضغطة نفسها نحو 30 ختمًا، وستُغرق الختم 15 وحدة داخل المكتب. تعمل المفاتيح بالطريقة نفسها: تكون Keyboard.current.spaceKey.wasPressedThisFrame مساوية لـ true مرة واحدة لكل ضغطة على مفتاح المسافة.
التحدي
متوسطابدأ العدّاء السريع باستخدام مفتاح المسافة: إلى الأسفل للانحناء، وإلى الأعلى للركض.
- في
Update()، عندما يكون!runningوKeyboard.current.spaceKey.wasPressedThisFrame: عيّنset، وحرّكه إلى الأسفل بمقدارcrouch، وسجّلSet. - عندما يكون
setوwasReleasedThisFrame: ألغِ تعيينset، وعيّنrunning، وحرّكه إلى الأعلى بمقدارcrouch، وسجّلGo!. - أثناء
running، حرّكه على طول المحور +z بسرعةspeedوحدة في الثانية.
اضغط على «العب»، واستمر في الضغط على مفتاح المسافة ثم اتركه: ستظهر Set ثم Go! في وحدة التحكم. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
private bool set;
private bool running;
void Update()
{
// عند الضغط على Space: انحنِ وسجّل Set. عند تحرير Space: قف وسجّل Go! ثم اركض.
}
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامك9نظام الإدخال الجديد
نظاما الإدخاللوحة المفاتيح والفأرةتم الضغط عليه في هذا الإطارإجراءات الإدخالمراجعة: التبديل بين أنظمة الإدخالتدرّب بنفسك: Playground لـ Unity