Menu
CoddyTech

צירים

חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 13 מתוך 67.

Input.GetAxis("Horizontal") ממירה את החצים שמאלה וימינה (וגם A ו־D) למספר אחד בין ‎-1 ל־1: ‏‎-1 לשמאל, 1 לימין, 0 לאף אחד מהם. Input.GetAxis("Vertical") עושה אותו דבר עבור החצים למטה ולמעלה (S ו־W). קריאה אחת מחליפה שתי הוראות if, ומקל של שלט משחק מפעיל את אותם הצירים ללא קוד נוסף.

המספר לא קופץ. בהגדרות ברירת המחדל של Unity הוא נע לעבר ערך היעד שלו בקצב של 3 לשנייה, ולכן לוקח לו שליש שנייה להגיע ל־1 אחרי לחיצה, ועוד שליש שנייה לרדת בחזרה ל־0 אחרי השחרור. ההדרגתיות הזאת גורמת לרחפת להאיץ בעדינות ולהיסחף עד לעצירה:

public float speed = 5f;

void Update()
{
    float h = Input.GetAxis("Horizontal");
    transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}

Input.GetAxisRaw("Horizontal") מדלגת על ההדרגתיות: הערך הוא בדיוק ‎-1,‏ 0 או 1 בכל פריים, כך שהתנועה מתחילה ונעצרת מיד. השתמשו ב־GetAxis עבור דברים שאמורים להרגיש כבדים, וב־GetAxisRaw עבור פקדים חדים ומדויקים. כששני החצים לחוצים, שתי הפונקציות מחזירות 0, כי שני הכיוונים מבטלים זה את זה. (בפרויקט Unity 6, ההגדרה Active Input Handling מהשיעור Steer with the Keys חלה גם על הצירים.)

challenge icon

אתגר

קל

הרובר צריך להגיב באופן חד, ללא האצה או האטה: מקשי החצים (או WASD) מניעים אותו במהירות של speed יחידות לשנייה, שמאלה וימינה לאורך ציר x, ולמעלה ולמטה לאורך ציר z. הוא נע במהירות מלאה מרגע הלחיצה על מקש, ועוצר ברגע שמשחררים אותו.

לחץ על Play, לחץ על המשחק ונהג, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Horizontal מניע לאורך x, Vertical לאורך z, ללא החלקת תנועה.
    }
}
quiz iconבחנו את עצמכם

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

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