Menu
CoddyTech

מקלדת ועכבר

חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 45 מתוך 60.

מערכת הקלט מעניקה לכל התקן אובייקט. Keyboard.current היא המקלדת, וכל מקש בה הוא פקד עם שם: spaceKey, aKey, upArrowKey, או Keyboard.current[Key.Space] כדי לגשת לכל מקש לפי הערך Key שלו. Mouse.current הוא העכבר, ויש בו leftButton, rightButton ו-position. הערך של isPressed בפקד הוא true בכל פריים שבו מחזיקים אותו לחוץ, כפי שהיה עם Input.GetKey. הצוללת הזאת צוללת ועולה בעזרת החצים, ומאירה בפנס החיפוש שלה כל עוד לחצן העכבר לחוץ:

using UnityEngine;
using UnityEngine.InputSystem;

public class Submarine : MonoBehaviour
{
    public float diveSpeed = 2f;
    public Light searchlight;

    void Update()
    {
        Keyboard keyboard = Keyboard.current;
        if (keyboard == null) return;   // לא מחוברת מקלדת

        if (keyboard.downArrowKey.isPressed)
            transform.position += Vector3.down * diveSpeed * Time.deltaTime;
        if (keyboard.upArrowKey.isPressed)
            transform.position += Vector3.up * diveSpeed * Time.deltaTime;

        searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
    }
}

current הוא ההתקן שבו השתמשו לאחרונה, והוא null כשאין התקן כזה: ייתכן שלטלפון או לקונסולה אין מקלדת, ובדיקות null מונעות מהסקריפט להיכשל במצב כזה. למקלדת אין צירים, לכן החץ למטה והאות S הם שני מקשים נפרדים: צוללת שאמורה לצלול גם כשלוחצים על S בודקת את keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed. Mouse.current.position.ReadValue() מחזיר את מיקום המצביע כ-Vector2 בפיקסלים על המסך, מפינת שמאל למטה, בדומה ל-Input.mousePosition.

challenge icon

אתגר

בינוני

הטיסו את כדור הפורח באמצעות Keyboard.current ו-Mouse.current.

  1. כל עוד rightArrowKey או dKey isPressed, סחפו לאורך ‎+x בקצב של drift יחידות לשנייה; עם leftArrowKey או aKey, לאורך ‎-x.
  2. bool burner מקבל את הערך של spaceKey או של leftButton כשהם לחוצים; קראו ל-flame.SetActive(burner);.
  3. כשהמבער פועל, עלו בקצב של rise; כשהוא כבוי, רדו בקצב של sink, אך לעולם לא מתחת ל-groundY.

לחצו על ״שחק״ והטיסו: החזיקו את מקש הרווח או את לחצן העכבר כדי לעלות. לאחר מכן לחצו על ״בדיקה״.

נסו בעצמכם

using UnityEngine;
using UnityEngine.InputSystem;

public class Balloon : MonoBehaviour
{
    public float drift = 2f;
    public float rise = 3f;
    public float sink = 1f;
    public float groundY = 2f;
    public GameObject flame;

    void Update()
    {
        // נעים לצדדים בעזרת מקשי החצים או A ו-D, ומפעילים את המבער בעזרת Space או העכבר
    }
}

כל השיעורים ביחידה בניית משחקים אמיתיים

תרגלו בעצמכם: Unity אונליין