PracticU

בניית שלב - חלק 1

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח משחקים יוניטי - Unity - שפת #C › בניית שלב - חלק 1
מילון מושגים:
באג - תקלה או שגיאה בקוד שגורמת לתוכנה להתנהג בניגוד למצופה.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.

בניית שלב - חלק 1
בשיעור מתקנים שני באגים בזיהוי ההתנגשויות: האויב מסתובב כשהשחקן מתקרב אליו מדי, והשחקן נתקע על הקיר ולא נופל. שני הבאגים נובעים מזיהוי התנגשויות לא מכוון מספיק.
השלבים העיקריים
1. הבנת הבאג הראשון: דטקטור הקיר של האויב לא מבחין בין קיר לשחקן. הפתרון הוא לבדוק את התג של הפלור לפני שמסובבים את האויב, כך שההתנגשות עם השחקן לא תגרום לפנייה.
2. הבנת הבאג השני: ב-OnCollisionExit של השחקן הוא מזהה יציאה מהקרקע גם כשהוא עדיין נוגע בה בקולידר אחר, ולכן מפעיל את אנימציית הקפיצה בטעות. הפתרון הוא להעתיק את בדיקת ה-OnTriggerExit הקיימת בדטקטור הקרקע של האנמי ולוודא שהשחקן באמת לא נוגע באף משטח.
3. קולידר נכון: הקוד מקבל את הקולידר דרך הבסיס Collider2D, כי הן BoxCollider2D והן CapsuleCollider2D יורשים ממנו.
4. חומר פיזיקלי לפלטפורמות: נוצר Physics Material 2D עם חיכוך 0 והוא מוחל על הפלטפורמות, ומונע את ההיצמדות לקיר.
שימו לב
שכבת הסידור של הגרפיקה עשויה ליצור באג גרפי דומה, שאפשר לפתור באותו אופן באמצעות Sorting Layer.
השיעור הבא בקורס: בניית שלב - חלק 2

פרקי ההרצאה: בניית שלב - חלק 1

  1. 00:00

    באגי ההסתובבות וזיהוי הקיר

  2. 01:15

    עדכון מצב הרצפה ב-OnCollisionExit2D

  3. 02:06

    בדיקה שהדמות באמת יצאה מהרצפה

  4. 03:04

    תורשה ו-GetComponent של Collider2D

  5. 04:18

    בדיקת תג הרצפה בחיישן הקיר

  6. 04:57

    באג ההידבקות לקיר במהלך קפיצה

תמלול ההרצאה: בניית שלב - חלק 1

הטקסט המלא של הדקות הראשונות בהרצאה «בניית שלב - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    היום אנחנו הולכים לתקן כמה באגים שיש לנו במשחק. אני פשוט אריץ בשביל שאני אוכל להדגים מה כרגע לא בסדר.

  2. 00:13

    דבר אחד שלא בסדר זה אם אני מתקרב לאנימי שלי, מה שקורה כאשר אני מתקרב קצת יותר מדי זה שהוא מסתובב לצד שני, ומה שקורה אם אני נצמד לקיר ופונה ימינה, או כמובן זה היה כבר רגע בצד ההפוך, זה פתאום אני נכנס למצב מוזר כזה שאני בעצם לא יכול לקפוץ, ואני לא נוגע באדמה אם אני משחרר את זה זה

  3. 00:40

    משתחרר אם אני נופל אבל אם אני חוזר לכאן ועוד פעם מסתובב ימינה שני הבאגים האלה קורים בגלל אותה סיבה זה סוג של זיהוי התנגשויות שהוא לא מספיק מכוונן כמו שצריך במקרה הראשון הוול דיטקטור של האנמי הוא לא מבחין בין וול לבין הפלייר ובמקרה של הפלייר כאשר אני בודק כמו שהיה לנו

  4. 01:12

    במעבר בין הטיילים כשה-Nמי רץ עליהם אז אותו דבר כאשר הקוליידר של הפלייר מזהה שהוא כבר לא מתנגש זאת אומרת שיש on collision exit אז הוא אומר שזה אני קופץ אני אראה את זה בקוד נחכה שהוא יתעורר ובפלייר קונטרולר שלי on collision exit אני שוב אומר איז גראונד זה פולס וסט בול ג'אמפינג

  5. 01:50

    זאת אומרת קפצתי מה שלא אמור לקרות פה כי אני בעצם יוצא מקוליז'ן אחד אבל שוב אני לא יצאתי מהרצפה אני לא נפרדתי מהרצפה מבחינת הקוליז'ן ולכן אני לא אמור להיכנס למצב הזה. אז הפתרון לבאג הזה זה בדומה לאנמי שיש לו בגראונד דיטקטור יש לו כאן on trigger exit אני בודק אם אני לא טאצ'ינג ליירס אז במקרה הזה הסתובבתי מה שאני הולך לעשות זה להעתיק את האיף הזה פשוט

  6. 02:26

    לפלייר ואם יצאתי מהפלור ואם אני לא נוגע בשום דבר אחר אז אני אומר שאני לא גראונדד ואני מפעיל את האנימציה של ג'אמפ. כאמור במקרה המקרה היחידי שזה אמור לקרות זה כשאני לוחץ על הכפתור w במקרה שלי חצי למעלה או מה שזה לא יהיה שהגדרתם אצלכם שאני מוסיף את ה-velocity לציר ה-Y כלומר מפעיל את הקפיצה אז אני אמור להגיד לו is grounded at the

  7. 03:04

    falls ולהפעיל את האנימציה של ה-jumping אז עכשיו בוא נריץ ונבדוק אם זה עובד ויש לנו פה אירור למה כי יש לי פה ניסיון לגשת לבוקס קוליידר נחזור לקוד יש לי פה ניסיון לגשת לבוקס קוליידר אבל לפלייר שלי אני מזכיר יש קפסול קוליידר למזלי שניהם יורשים ואנחנו כבר יותר מבינים מה זה תורשה.

  8. 03:35

    שניהם יורשים מ-collider 2D ולכן כשנושא get component collider 2D אני פותר בעצם את הבעיה כי collider 2D גם בוקס קוליידר 2D וגם קפסול קוליידר 2D הם קוליידר 2D. זה באמת היחס אני מזכיר שוב מאוד חשוב להבין את זה תורשה מדבר איתי על יחס של סוג של.

  9. 04:00

    אז בוקס קוליידר 2D הוא סוג של קוליידר 2D כמו פלייר וגם אנמי הם סוג של שוטינג קראקטר. אז פתרנו את הבעיה הזאת ועכשיו אנחנו נלך לוול דיטקטור ונפתח את הסקריפט ואני רוצה לבדוק פה if ואני מקבל פה את הפרמטר collision כן אני בודק if collision נקודה ואני מזכיר גראונד יש להם טאג פלור כן אז if קוליישן נקודה טאג שווה לו רק אז תעשה את

  10. 04:39

    מה שהוא עושה פה שזה לפנות לצד השני. עכשיו אני אלחץ על פליי וכרגע מה שאמור לקרות זה שאם אני מתנגש עם האנמי הוא לא אמור לזהות את זה כהתנגשות.

  11. 04:57

    אוקיי אז הספקנו יפה ולכן אני אתקן באג נוסף. והבאג הנוסף לצורך ההדגמה שלו אני רוצה לעשות פה משהו אחד זה שוב רק לצורך ההדגמה את זה טוב לא צריך אני פשוט אקח את זה קונטרול d שכפלתי אותו עוד פטנט קטן אם אני לוחץ על קונטרול שיפט ואז אני גורר אז הוא קופץ לי ביחידות שלמות.

  12. 05:24

    ושוב קונטרול d קונטרול שיפט מופיע לי ריבוע 4 קטן ואז אני יכול לגרור את זה את האנמי אני אכבה לצורך העניין ומה שקורה כרגע וזה הבאג שלי זה שאם אני מנסה כרגע לקפוץ ולהתקע בקיר אני יכול בעצם להיצמד לקיר ולא ליפול עד שאני עוזב.

  13. 05:51

    זאת אומרת כל עוד אני לוחץ על שמאלה אתם רואים שההליכה שלי שמאלית אני נתקע בקיר אני נתקע על הקיר. יש משחקים שזה קיים בהם יש wall hang ויש

לקורס המלא: קורס פיתוח משחקים ביוניטי

ההרצאה הקודמת: פיתוח דמות האויב - חלק 8

ההרצאה הבאה: בניית שלב - חלק 2

הרצאות קשורות מקורסים אחרים

  • בניית מודל
  • בניית צ'אט באתר
  • התקנת vCenter 8 - שלב ראשון
  • בניית חלון מאפס

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב