
הטקסט המלא של הדקות הראשונות בהרצאה «פיתוח דמות האויב - חלק 7» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
זה שיעור בנושא שלא תכננתי ללמד כרגע אבל א' הוא די חשוב וב' הוא כבר מפריע לי כרגע וזה למה אני אפעיל ואני אראה מה בעצם היה הטריגר לשיעור הזה כרגע כרגע אם אני יורה באנמי שימו לב מה קורה לאנמי הוא גם עף אחורה שזה לא חייב להיות משהו לא בסדר זה עניין של טעם אבל יותר גרוע מזה הוא מסתובב.
כיוון שהטריגר שלו, הוולד דטקטור, מזהה התנגשות. הוא אמור לזהות התנגשות רק עם פלטפורמה, והוא מזהה התנגשות בכלל, ולכן זה גורר את השינוי כיוון, וזה מה שאני רוצה למנוע.
אז אני גם רוצה למנוע את זה שהוא יעוף אחורה. אז בשביל זה אני צריך לשנות את הבולט, את הבוקס קוליידר שלו, שיהיה טריגר. זה דבר אחד.
דבר שני, זה את ה-on collision ender שלו, אני צריך לשנות ל-onTriggerEnter2D כאשר onTrigger2D מזהה מקבל לא Collision2D אלא Collider2D ובעצם בזאת סיימתי את השינוי כל הקוד שנעשה היום עכשיו מה שזה גורר וזה כבר יחמיר את הבעיה זה שאוקיי אז אני יורה את הקליע והכל בסדר אבל אם אני יורה פה אז הטריגר של הבולט מזהה
את הטריגר שהוא הפלייר דיטקטור של האנמי ולכן הוא נהרס גם כשהוא נמצא אם הוא פוגע בחלל פה בטריגר שנמצא פה ולצורך זה ליוניטי יש מנגנון שנקרא שכבות.
ובעצם אני יכול להגדיר לו אובייקטים מאיזה שכבה מתנגשים עם אובייקטים מאיזה שכבות אחרות אז אני פשוט לצורך זה יש כמה שלבים קטנים אחד זה להגדיר בעצם את השכבות שלי שני הדבר השני זה להגדיר לכל אובייקט לאיזה שכבה הוא שייך.
ואחר כך אנחנו נגדיר למנוע פיזיקה איזה חישובים הוא מבצע לגבי התנגשויות בין שכבות שונות, בין אובייקטים משכבות שונות. אוקיי, אז על כל Game Object שאני עומד יש לי פה את ה-Layer, אני יכול פשוט ללחוץ פה על Add Layer ואז להוסיף את השכבות שאני רוצה.
במקרה שלנו אני רוצה שכבה ל-Platforms, אני רוצה שכבה ל-Characters, אני רוצה שכבה ל-Bullets ואני רוצה שכבה ל-Detectors בנפרד, אני רוצה להגדיר לו ממה הדטקטורס מתנגש, האם הוא מתנגש עם קרקטרס וכן הלאה.
אוקיי, השלב הבא, בואו נשייך את האובייקטים, אז קודם כל את הבולט שהוא הפריפאב אני משייך לבולטס, את ה-NME והפלייר אני משייך לקרקטרס. עכשיו הוא שואל אותי האם נשייך גם את ה-children שלו, אז אני אומר לו לא, כי הדטקטורס שהם ה-children של ה-NME, אני משייך אותם לדטקטורס,
וכמובן את הפלטפורמות שלי, משייך ללטפורמס עכשיו אני הולך ל-Edit Project Settings Physics 2D ופה יש לי מטריצה כזאת של איזה אובייקטים מתנגשים עם איזה אובייקטים.
אני הולך לרוקן את כל הטבלה הזאת אני אגיד משהו בינתיים ואחרי שאני אסיים אתם תוכלו להריץ קדימה כי זה ייקח לי כמה שניות ככל שיש פחות Vים יש פחות חישובים ככל שיש פחות חישובים יש ביצועים יותר טובים ויצא לי גם חרוז.
כרגע מעניין אותי רק הארבע שכבות החדשות שהוספתי, ואנחנו יכולים להגדיר פה מה מתנגש עם מה. אז האם פלטפורמות מתנגשות עם דטקטורס? כן.
אני רוצה שהדטקטורס של הפלטפורמס יזהה מתי ה-NME יוצא, צריך להסתובב. האם הפלטפורמס מתנגש עם בולטס? כן. האם פלטפורמס מתנגש עם קרקטרס?
כן, אחרת הם ייפלו לי דרכם. ופלטפורמס עם פלטפורמס? לא. קרקטרס עם דטקטורס, כן. הדטקטור שיש פה של האנאמי מזהה את הפלייר שהוא קרקטר.
קרקטרס עם בולטס כמובן. קרקטרס עם קרקטרס אפשר להשאיר את זה ריק ואז הם יוכלו לעבור אחד נגד אחד דרך השני, שזה סבבה מבחינתי.
החלטה שלכם. בולטס עם דטקטורס לא זה בדיוק הבעיה שאנחנו רוצים לפתור. בולטס עם בולטס גם עניין של החלטה אם אני יכול לירות ביריות של האויב אני אגדיר את זה כלא, כיוון שאני רוצה שבמשחק שלי אני רוצה שהשחקן יצטרך להתחמק מהיריות ולא סתם לירות בהן, במיוחד במקרה שלנו שהם בעצם אותם כדורים ופשוט
אני אוכל לעמוד מול האנאמי ולירות בקצב יותר מהר, הוא יצטרך להימנע. אז אני לא רוצה את המנגנון