PracticU

פיתוח דמות האויב - חלק 7

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח משחקים יוניטי - Unity - שפת #C › פיתוח דמות האויב - חלק 7
פיתוח דמות האויב - חלק 7
השיעור עוסק בבעיה שבה בולט שנורה מחלל את האויב ומסובב אותו, כי הדטקטור שלו מזהה כל התנגשות ולא רק התנגשות עם פלטפורמה. הפתרון הוא להפוך את הקולידרים לטריגרים ולחלק את האובייקטים לשכבות עם מטריצת התנגשויות ברורה.
השלבים העיקריים
1. הפיכה לטריגר: הבולט וה-Box Collider של הדטקטור מסומנים כטריגר, וה-OnCollisionEnter2D הופך ל-OnTriggerEnter2D שמקבל Collider2D.
2. הגדרת שכבות: נוספות השכבות Platforms, Characters, Bullets ו-Detectors, וכל אובייקט משויך לשכבה שלו. הבולט הופך לבולטים, האויב והשחקן לדמויות, והדטקטורים שהם ילדים של האויב לדטקטורים.
3. מטריצת ההתנגשויות: ב-Project Settings תחת Physics 2D מסמנים רק את הזוגות שצריכים להתנגש. פלטפורמות מתנגשות עם דטקטורים, בולטים ודמויות. דמויות מתנגשות עם דטקטורים ובולטים. פלטפורמות לא מתנגשות זו עם זו, ודטקטורים לא מתנגשים עם בולטים.
4. החלטות עיצוב: קרקטרס מול קרקטרס אפשר להשאיר ריק כדי שיעברו זה דרך זה, ובולטים מול בולטים לא מסומנים כדי שהשחקן יצטרך להתחמק מהירי ולא לירות בחזרה.
שימו לב
ככל שיש פחות זוגות שמחושבים, הביצועים טובים יותר. אחרי השינוי הדטקטור של האויב כבר לא מזהה את הבולט, אבל ממשיך לזהות את השחקן.
השיעור הבא בקורס: פיתוח דמות האויב - חלק 8

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

  1. 00:00

    הבעיה: האויב מסתובב כשנפגע מכדור

  2. 00:40

    הפיכת הכדור לטריגר והתאמת האירוע

  3. 01:39

    הגדרת שכבות ב-Unity

  4. 02:15

    שיוך האובייקטים לשכבות

  5. 03:14

    מטריצת ההתנגשויות בין השכבות

  6. 04:14

    אילו שכבות מתנגשות זו בזו

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

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

  1. 00:02

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

  2. 00:30

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

  3. 00:47

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

  4. 01:00

    דבר שני, זה את ה-on collision ender שלו, אני צריך לשנות ל-onTriggerEnter2D כאשר onTrigger2D מזהה מקבל לא Collision2D אלא Collider2D ובעצם בזאת סיימתי את השינוי כל הקוד שנעשה היום עכשיו מה שזה גורר וזה כבר יחמיר את הבעיה זה שאוקיי אז אני יורה את הקליע והכל בסדר אבל אם אני יורה פה אז הטריגר של הבולט מזהה

  5. 01:39

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

  6. 01:56

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

  7. 02:14

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

  8. 02:31

    במקרה שלנו אני רוצה שכבה ל-Platforms, אני רוצה שכבה ל-Characters, אני רוצה שכבה ל-Bullets ואני רוצה שכבה ל-Detectors בנפרד, אני רוצה להגדיר לו ממה הדטקטורס מתנגש, האם הוא מתנגש עם קרקטרס וכן הלאה.

  9. 02:52

    אוקיי, השלב הבא, בואו נשייך את האובייקטים, אז קודם כל את הבולט שהוא הפריפאב אני משייך לבולטס, את ה-NME והפלייר אני משייך לקרקטרס. עכשיו הוא שואל אותי האם נשייך גם את ה-children שלו, אז אני אומר לו לא, כי הדטקטורס שהם ה-children של ה-NME, אני משייך אותם לדטקטורס,

  10. 03:14

    וכמובן את הפלטפורמות שלי, משייך ללטפורמס עכשיו אני הולך ל-Edit Project Settings Physics 2D ופה יש לי מטריצה כזאת של איזה אובייקטים מתנגשים עם איזה אובייקטים.

  11. 03:33

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

  12. 03:51

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

  13. 04:04

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

  14. 04:17

    כן, אחרת הם ייפלו לי דרכם. ופלטפורמס עם פלטפורמס? לא. קרקטרס עם דטקטורס, כן. הדטקטור שיש פה של האנאמי מזהה את הפלייר שהוא קרקטר.

  15. 04:29

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

  16. 04:42

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

  17. 05:06

    אני אוכל לעמוד מול האנאמי ולירות בקצב יותר מהר, הוא יצטרך להימנע. אז אני לא רוצה את המנגנון

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

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

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

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

  • שלבי פיתוח של התוכנה
  • מחזור חיי פיתוח
  • מחזור חיים של פיתוח מוצר תוכנה
  • הרצת הטסטים האוטומטיים - פיתוח אנדרואיד

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

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