Menu
CoddyTech

נלחץ בפריים הזה

חלק מהיחידה בניית משחקים אמיתיים במסלול ה-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 פעם אחת בכל לחיצה על מקש הרווח.

challenge icon

אתגר

בינוני

התחילו את הרץ בלחיצה על מקש הרווח: למטה כדי להתכופף, למעלה כדי לרוץ.

  1. ב־Update(), כאשר !running ו־Keyboard.current.spaceKey.wasPressedThisFrame: הגדירו את set, הזיזו למטה ב־crouch, ורשמו Set.
  2. כאשר set ו־wasReleasedThisFrame: אפסו את set, הגדירו את running, הזיזו למעלה ב־crouch, ורשמו Go!.
  3. כל עוד running, הזיזו לאורך ציר ‎+z במהירות של speed יחידות לשנייה.

לחצו על „שחק”, החזיקו את מקש הרווח ושחררו אותו: תחילה Set, ואז Go! בחלון Console. לאחר מכן לחצו על „בדיקה”.

נסו בעצמכם

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! ביומן ולרוץ.
    }
}

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

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