Menu
CoddyTech

צירים

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

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

אתגר

קל

גרמו לרובר לנסוע בתגובה חדה, ללא האטה הדרגתית.

  1. בתוך Update(), קראו את float h = Input.GetAxisRaw("Horizontal"); ואת float v = Input.GetAxisRaw("Vertical");.
  2. הוסיפו את new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime) אל transform.position.

לחצו על "שחק", לחצו על המשחק ונהגו באמצעות החצים או WASD: הרובר מתחיל ונעצר מיד. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;

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

    void Update()
    {
        // Horizontal מניע לאורך ציר x, ו-Vertical לאורך ציר z, ללא החלקה.
    }
}

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

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