PracticU

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

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

פיתוח דמות האויב - חלק 8
בשיעור הזה מוסיפים לאויב יכולת ירי, ובמקום להעתיק את הקוד מהשחקן מעבירים את כל מה שקשור ליריות למחלקת בסיס משותפת. כך השחקן והאויב יורשים את אותה פונקציונליות.
השלבים העיקריים
1. מחלקת בסיס לירי: נוצר סקריפט בשם ShootingCharacter. הפריפאב של הבולט, נקודת היציאה לירי ופונקציית הירי עוברים אליו מהשחקן, והשחקן והאויב יורשים ממנו. השדות המשותפים כבר קיימים בבסיס, ולכן אין צורך לגרור אותם מחדש.
2. מהירות במקום כיוון: במקום פרמטר בוליאני שמציין אם מדובר בשחקן, הפונקציה מקבלת מהירות מסוג float בציר X. אם הדמות פונה ימינה המהירות נשארת חיובית, ואחרת היא מוכפלת במינוס.
3. הימנעות מיצירה חוזרת: יצירת וקטור חדש בכל פריים מיותרת. הווקטור נוצר פעם אחת בתחילת הדרך ונשמר במשתנה, ורק מוצבים בו ערכים חדשים.
4. נקודת ירי לאויב: לאויב נוספה נקודת ירי משלו שמחוברת לפריפאב של הבולט, ואת המשתנה הזה מזהים מתוך הירושה.
5. מהירות שונה: הבולט של השחקן נורה במהירות 10 והבולט של האויב במהירות 4, כדי שלשחקן תהיה אפשרות להתחמק.
שימו לב
נשארו שני באגים בקולידר של האויב, שמזהה קירות ושחקן בצורה לא נכונה. הם נפתרים בשיעור הבא.

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

  1. 00:00

    רעיון התורשה: שחקן ואויב יורים

  2. 01:16

    שיפור ביצועים: שמירת וקטור במשתנה

  3. 02:09

    בדיקת כיוון הפנייה לפי localScale

  4. 03:18

    יצירת מחלקת האב ShootingCharacter

  5. 04:31

    פונקציית ירי במחלקת האב וירושה לאויב

  6. 05:51

    הגדרת נקודת ירי לאויב

  7. 06:51

    שליחת כיוון הירי לקליע בפרמטר בוליאני

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

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

  1. 00:02

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

  2. 00:18

    במקרה הזה, גם הפלייר וגם ה-Enemy הם סוג של דמות, או יותר מפורט אפילו, סוג של דמות שיורה. אז לוגית כדאי לי ליצור קלאס שהוא יותר כללי, ולא לשכתב קוד.

  3. 00:35

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

  4. 00:58

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

  5. 01:20

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

  6. 01:33

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

  7. 01:54

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

  8. 02:33

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

  9. 02:58

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

  10. 03:39

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

  11. 04:13

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

  12. 05:21

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

  13. 05:49

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

  14. 06:21

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

  15. 06:37

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

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

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

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

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

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

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

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