מקלדת ועכבר
חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 45 מתוך 60.
מערכת הקלט מעניקה לכל התקן אובייקט. Keyboard.current היא המקלדת, וכל מקש בה הוא פקד עם שם: spaceKey, aKey, upArrowKey, או Keyboard.current[Key.Space] כדי לגשת לכל מקש לפי הערך Key שלו. Mouse.current הוא העכבר, ויש בו leftButton, rightButton ו-position. הערך של isPressed בפקד הוא true בכל פריים שבו מחזיקים אותו לחוץ, כפי שהיה עם Input.GetKey. הצוללת הזאת צוללת ועולה בעזרת החצים, ומאירה בפנס החיפוש שלה כל עוד לחצן העכבר לחוץ:
using UnityEngine;
using UnityEngine.InputSystem;
public class Submarine : MonoBehaviour
{
public float diveSpeed = 2f;
public Light searchlight;
void Update()
{
Keyboard keyboard = Keyboard.current;
if (keyboard == null) return; // לא מחוברת מקלדת
if (keyboard.downArrowKey.isPressed)
transform.position += Vector3.down * diveSpeed * Time.deltaTime;
if (keyboard.upArrowKey.isPressed)
transform.position += Vector3.up * diveSpeed * Time.deltaTime;
searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
}
}current הוא ההתקן שבו השתמשו לאחרונה, והוא null כשאין התקן כזה: ייתכן שלטלפון או לקונסולה אין מקלדת, ובדיקות null מונעות מהסקריפט להיכשל במצב כזה. למקלדת אין צירים, לכן החץ למטה והאות S הם שני מקשים נפרדים: צוללת שאמורה לצלול גם כשלוחצים על S בודקת את keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed. Mouse.current.position.ReadValue() מחזיר את מיקום המצביע כ-Vector2 בפיקסלים על המסך, מפינת שמאל למטה, בדומה ל-Input.mousePosition.
אתגר
בינוניהטיסו את כדור הפורח באמצעות Keyboard.current ו-Mouse.current.
- כל עוד
rightArrowKeyאוdKeyisPressed, סחפו לאורך +x בקצב שלdriftיחידות לשנייה; עםleftArrowKeyאוaKey, לאורך -x. bool burnerמקבל את הערך שלspaceKeyאו שלleftButtonכשהם לחוצים; קראו ל-flame.SetActive(burner);.- כשהמבער פועל, עלו בקצב של
rise; כשהוא כבוי, רדו בקצב שלsink, אך לעולם לא מתחת ל-groundY.
לחצו על ״שחק״ והטיסו: החזיקו את מקש הרווח או את לחצן העכבר כדי לעלות. לאחר מכן לחצו על ״בדיקה״.
נסו בעצמכם
using UnityEngine;
using UnityEngine.InputSystem;
public class Balloon : MonoBehaviour
{
public float drift = 2f;
public float rise = 3f;
public float sink = 1f;
public float groundY = 2f;
public GameObject flame;
void Update()
{
// נעים לצדדים בעזרת מקשי החצים או A ו-D, ומפעילים את המבער בעזרת Space או העכבר
}
}
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעות2כפתורים ומסכים
כפתורים ו-onClickביטויי למבדהחיבור ב-Inspectorהפעלה וכיבוי של פאנליםפסי בריאותסיכום: חנות שדרוגיםתרגלו בעצמכם: Unity אונליין