Menu
CoddyTech

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

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

התשובה של 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

אתגר

בינוני

האצן ממתין בזינוק. בסקריפט שלו מוגדרים speed (6) ו־crouch (0.3).

  • כשלוחצים על מקש הרווח, האצן מתכופף לתנוחת הזינוק: הוא זז למטה crouch יחידות, ונרשם Set.
  • כשמשחררים את מקש הרווח לאחר מכן, האצן מזדקף שוב (למעלה crouch יחידות), נרשם Go! והריצה מתחילה: מכאן ואילך הוא רץ לאורך ציר ‎+z במהירות של speed יחידות לשנייה.
  • החזקת מקש הרווח רושמת Set פעם אחת, ולא פעם בכל פריים. לאחר שהאצן מתחיל לרוץ, מקש הרווח לא עושה דבר נוסף.

קרא את מקש הרווח באמצעות Keyboard.current. לחץ על Play, החזק את מקש הרווח ושחרר אותו, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;
using UnityEngine.InputSystem;

public class Sprinter : MonoBehaviour
{
    public float speed = 6f;
    public float crouch = 0.3f;

    void Update()
    {
        // בלחיצה על Space: התכופף והדפס ללוג Set. בשחרור Space: הזדקף, הדפס ללוג Go! ורוץ.
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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