Menu
CoddyTech

נלחץ, מוחזק, שוחרר

חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 19 מתוך 85.

Unity יכולה לספר לך שלושה דברים שונים על מקש, ועל כל אחד מהם שואלים בתוך Update():

  • Input.GetKeyDown(KeyCode.Space): האם מקש הרווח נלחץ בפריים הזה? הערך הוא true בפריים אחד לכל לחיצה.
  • Input.GetKey(KeyCode.Space): האם מקש הרווח לחוץ עכשיו? הערך הוא true בכל פריים כל עוד מקש הרווח מוחזק לחוץ.
  • Input.GetKeyUp(KeyCode.Space): האם מקש הרווח שוחרר בפריים הזה? הערך הוא true בפריים אחד, כשהמקש משתחרר.

החזק את מקש הרווח למשך חצי שנייה בקצב של 60 פריימים לשנייה, ו-GetKey יהיה true ב-30 פריימים, GetKeyDown בראשון שבהם, ו-GetKeyUp בפריים שאחרי האחרון. תותח שיורה פעם אחת בכל לחיצה בודק את GetKeyDown; עם GetKey, לחיצה אחת תירה 30 יריות:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp מיועד למה שקורה כשהשחקן משחרר את המקש, למשל סיום ריצה מהירה. שלושתם נותנים תשובה רק עבור הפריים הנוכחי, ולכן מקומם בתוך Update(): היא פועלת בכל פריים, בעוד Start() פועלת פעם אחת וכמעט תמיד תחמיץ את הלחיצות.

challenge icon

אתגר

קל

הקלע נטען כל עוד מקש הרווח לחוץ, ומדווח על הירייה עם שחרורו.

  1. ב־Update(), כל עוד Input.GetKey(KeyCode.Space) הוא true, הוסף את Time.deltaTime אל charge.
  2. בעת Input.GetKeyUp(KeyCode.Space), רשום "Charge: " + charge, ואז הגדר את charge ל־0.

לחץ על "שחק", החזק את מקש הרווח ושחרר: הקונסול יציג שורה כגון Charge: 1.5. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // כל עוד Space לחוץ: charge גדל ב־1 בכל שנייה.
        // כשמשחררים את Space: רשמו ביומן את הערך של charge, ואז אפסו אותו ל־0.
    }
}

כל השיעורים ביחידה יסודות הסקריפטים ב-Unity

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