PracticU

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

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח משחקים יוניטי - Unity - שפת #C › פיתוח דמות האויב - חלק 2
מילון מושגים:
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.

פיתוח דמות האויב - חלק 2
השיעור מוסיף לאויב זיהוי קיר: כשהוא מגיע לקיר, הוא מסתובב לכיוון השני.
השלבים
1. סביבה: מכפילים את הרצפה ומשנים את הסקייל שלה, וכל הפלטפורמות מאורגנות תחת Game Object ריק בשם Environment.
2. חיישן קיר: מוסיפים Game Object ילד לאויב עם Box Collider 2D שמוגדר כטריגר, ומוצב מול האויב. כשהאויב מסתובב, החיישן זז יחד איתו, כי הוא הבן שלו.
3. סקריפט: ב-OnTriggerEnter2D של החיישן נקראת מתודה של האויב שמסתובבת.
המתודה Turn
המתודה Turn היא ציבורית, והיא הופכת את הסקייל בציר X ואת המהירות לערך נגדי. כדי לקרוא לה מהחיישן משתמשים ב-transform.parent, שמחזיר את האב, ומקבלים ממנו את הרכיב EnemyController בעזרת GetComponent.
בעיה שנשארת
כשאין חיישן קצה, האויב ממשיך לנסות ללכת קדימה ונתקע בקיר או בקצה. פתרון לכך מוצג בשיעור הבא.
אחרי השיעור האויב מסתובב כשהוא מגיע לקיר, במקום להיתקע בו.
השיעור הבא בקורס: פיתוח דמות האויב - חלק 3

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

  1. 00:00

    הכנת סביבת הבדיקה לאויב המסתובב

  2. 01:02

    יצירת חיישן קיר כילד של האויב

  3. 02:45

    סקריפט חיישן הקיר וזיהוי התנגשות

  4. 03:54

    פונקציית turn להחלפת כיוון האויב

  5. 05:03

    קריאת turn מחיישן הקיר לאויב

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

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

  1. 00:02

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

  2. 00:36

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

  3. 00:53

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

  4. 01:27

    בשביל לגלות מתי אני מתנגש אני אעשה את זה אני לא רוצה שהוא יגיע ממש ממש עד הקצה אז אני פשוט אוסיף לו איזה חיישן קטן מקדימה. אז אני יוצר פה Create Empty Game Object מתחתיו נקרא לזה wall-detector ואני אזיז אותו לכאן ואני אוסיף לו box-collider 2D. אני לא רוצה אותו בכזה גודל אז אני אשנה אותו ל-0 עבודה 2 עבודה 2 זהו יש לנו בעצם וזה אני אעשה שהוא טריגר וברגע שמכיוון שהוא בעצם הבן של

  5. 02:22

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

  6. 02:52

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

  7. 03:40

    לעשות פה במקום להדפיס אני אגיד לו turn the character אוקיי עכשיו ואני צריך להוסיף את הפונקציונליות של הסיבוב של הפנייה ל-Enemy Controller.

  8. 03:58

    אז גם פה אני אנקה קצת, אני מוציא את הסטארט, ומה שאני רוצה לעשות פה זה פונקציה שהיא public, כדי שאני אוכל לקרוא לה מבחוץ, public void turn, ומה שאני עושה ב-turn, אני גם משנה את הספיד שלי לכיוון השני וגם את ה-scale, אז קודם כל transform.scale,

  9. 04:28

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

  10. 05:13

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

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

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

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

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

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

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

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