
Input.GetButtonDown("Jump"), כי קפיצה היא לחיצה בודדת ולא לחיצה ארוכה. מוסיפים ל-velocity וקטור קפיצה, new Vector2(0, 10), ששמור במשתנה ציבורי בשם jumpSpeed.הטקסט המלא של הדקות הראשונות בהרצאה «פיתוח דמות השחקן - חלק 3» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
היום אנחנו נגרום לדמות שלנו לקפוץ. אנחנו נעשה את זה בשלושה צעדים. בצעד הראשון אנחנו נגדיר את הציר האינפוט שלנו שיתאים לנו לקפיצה. בשלב השני אנחנו נגרום בעצם לדמות לקפוץ על ידי זה שנוסיף מהירות בציר ה-Y ל-Rigid Body שלנו.
ובשלב השלישי אנחנו נבדוק שאנחנו על הרצפה. כלומר, אני לא רוצה את האפשרות לקפוץ מהאוויר, אני רוצה אפשרות לקפוץ רק כאשר אני באמת עומד על הרצפה.
בואו נתחיל אנחנו כמובן מתחילים מהאינפוט אנחנו מסתכלים שיש לנו פה ציר שנקרא ג'אמפ ואין לו נגטיב בטון הפוזיטיב בטון שלו הוא ספייס אני אשנה אותו ל-W ככה אני רוצה במשחק שלי.
אני רוצה שבמקום ספייס שזה מקש מאוד מגושם תמיד עושה בעיות במקלדות ואני רוצה משחק נוח. אני רוצה שאם עלה למעלה בעצם אני קופץ ואני שומר עכשיו אני אגש בעצם לבדוק את האינפוט שלי.
קודם כל אני רוצה פה לנקות קצת אנחנו לא משתמשים בסטארט כרגע את זה אנחנו לא צריכים ופה אני אבדוק האם בעצם אני לוחץ על ג'אמפ ואיך אני עושה את זה אני לא עושה את זה הפעם עם גט אקסיס גט אקסיס הוא רלוונטי לתנועות כמו תנועות ימינה ושמאלה או בכלל תנועה או כל פעולה שאתה עושה בלחיצה ארוכה ג'אמפ זה לחיצה בודדת ולכן
אנחנו לא משתמשים בגט אקסיס אלא בגט בטון דאון אז ככה איף input.get-button ועכשיו שימו לב יש פה get-button, get-button-down ו-get-button-up.
down זה כשאני לוחץ על הכפתור, up זה כשאני עוזב אותו ו-get-button זה האם הוא לחוץ. עכשיו ככה, אז get-button-down ועכשיו את השם של הציר שהוא jump, אז מה שאני רוצה פה לעשות add y ולא ct.
עכשיו מה שאני רוצה לעשות זה להגדיר בעצם את מהירות הקפיצה שלי. אז אני אגדיר אותו כ-private וקטור 2 ואני מגדיר וקטור 2 כי ה-velocity הוא גם וקטור 2 כדי שאני אוכל לחבר ביניהם, אני צריך שהם יהיו מאותו סוג.
private וקטור 2 jump speed שווה new וקטור 2 ובציר ה-X לא רוצה שום דבר, 0 ובציר ה-Y ניתן לו 10, 10 זה כיוון חיובי זה למעלה. אז עכשיו מה שאני עושה פה זה פשוט rigid body שאם אתם זוכרים כבר יש לנו, כאמור נקודה ולוסיטי ואני רוצה להוסיף לו אז אני עושה פלוס שווה ג'אמפ ספיד וזהו אני שומר אני לוחץ פה על פליי ועכשיו
אם אני לוחץ על למעלה אני מקבל פה מהירות כמובן מכיוון שלא בדקנו אם אני על הרצפה אני יכול גם באמצע האוויר ללחוץ אני יכול ללחוץ כמה פעמים הוא יעוף לי כמו טיל וזה לא מה שמעניין אותי אבל כרגע זה בסדר חוץ מזה שהפיזיקה פה נראית על הפנים וזה גם כן אם קשור לסקייל ולמהירות אז אני אשחק עם זה
קצת אז למשל אני יכול ב-Edit Project Settings Physics 2D במקום מינוס 10 אני אשים מינוס 20 ל-Gravity ואני אראה איך זה עובד עדיין התאוצה שלו היא מאוד נמוכה אני אשנה פה ל-30 עכשיו משהו מאוד חשוב ב-Unity לזכור אם אני משנה ערכים בזמן ריצה הוא לא שומר לי אותם אחר כך אז אני אשנה פה את זה ועכשיו זה כבר יותר הגיוני אבל אם עכשיו אני עוצר זה ישתנה חזרה
למינוס 20 אז אני אעשה את זה למינוס 30 ואני גם רוצה שהוא יקפוץ יותר גבוה אז אני אשנה פה ל 15. בוא נראה איך זה נראה שימו לב שכמובן גם אם אני כרגע רץ ואני לוחץ על למעלה אז אני כרגע לא משנה את המהירות של הx כאשר אני לוחץ על הג'אמפ אני יכול גם לשלוט בו באוויר שזה מבחינתי בסדר וכמובן שאני יכול ללחוץ כמה פעמים שזה לא בסדר דרך אגב את האנימציות של הקפיצה נוסיף בשיעור הבא.
אוקיי, אז זה דבר שני שעשינו, שזה בעצם הוספנו את ה-velocity אחרי שהגדרנו את ה-input. הדבר האחרון שאני רוצה לעשות זה להוסיף בדיקה האם אני על הרצפה.
אז איך אני עושה את זה? קודם כל אני אגדיר private ball is grounded ואני אגדיר אותו כ-true בהתחלה ועכשיו אם אתם תשימו לב יש לי פה את הפונקציה update הפונקציה update לא אני קורא לה.
קוראת לה ויש לנו עוד הרבה מאוד פונקציות שאנחנו יכולים להשתמש בהן כאשר קוראים אירועים מסוימים אז יש לנו גם כמובן פונקציות בכל מה שקשור להתנגשויות ולכן אני יכול פשוט להתחיל לכתוב וזה ישלים לי אותם גם זה נחמד אז רוב האירועים האלה זה מתחיל ב-on ויש לנו פה המון פונקציות של אירועים שקורים ואני מקבל עליהם
איזשהו עדכון אז אני עכשיו on collision enter 2d והוא משלים לי לבד שימו לב שאני מקבל פה קוליז'ן עכשיו עוד דבר חשוב לעשות אני רוצה לתת בעצם סוג של שיוך