
Vector2 bulletSpeed ומעביר אותו ל-velocity בתחילת הריצה. מכיוון שהקליע Kinematic, כוח המשיכה לא משפיע עליו.Destroy(gameObject, 5f) מוחק את הקליע אחרי חמש שניות. הוא נמחק גם כשהוא נתקל במשהו.GetButtonDown("Fire1") נוצר מופע חדש בעזרת Instantiate, עם הפוזישן של ה-Spawn Point ו-Quaternion.identity כרוטיישן.BulletController ב-GetComponent וקוראים ל-SetDirection.הטקסט המלא של הדקות הראשונות בהרצאה «פיתוח דמות השחקן - חלק 5» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
היום אנחנו הולכים להוסיף יריות, עכשיו מה שאנחנו הולכים לעשות בשביל זה זה א' לייצר לנו Game Object שיהיה הקליע שלנו ולטפל בו מבחינת הסקריפט שצורף אליו, אחרי זה אנחנו נייצר ממנו Prefab שזה Game Object שאני יכול בעצם לשכפל בזמן ריצה, אנחנו נטפל באינפוט שיוצר את הקליע ונגדיר לו גם Spawn Point שממנו שבו הוא יבצע.
אז בואו נתחיל בתוך הספרייטס ובפלייר יש לנו פה Weapon Bullet. אני משנה לו את הספרייט מוד ל-Multiple ולוחץ על הפליי ועכשיו אני פותח את הספרייט אדיטור ותחת סלייס אני בוחר באוטומטיק והוא יודע לבד לזהות איפה יש גרפיקות הוא לא עושה את זה מושלם אנחנו רואים פה שיש לנו בעצם ארבע פרייטים שהוא מתייחס אליהם כאחת
אבל זה לא משנה כי אני מעוניין רק בספרייט הזה. אני לוחץ על הפלאי ונוצר לי בעצם את Weapon Bullet 1 ואני פשוט גורר אותו למסך. עכשיו אני צריך לשנות לו את ה-Sorting Layer ל-Game ואני אשנה לו את השם ל-Bullet.
יצרתי לי פה בעצם את ה-Bullet שלי ועכשיו אני מוסיף לו Rigid Body 2D כאשר ה-Body Type שלנו יהיה קינמטיק. קינמטיק זה אומר שאני שולט בו מהקוד אבל הוא לא מושפע מכוחות או מכוח המשיכה שזה גם כוח וכן הלאה.
הדבר הבא שאני מוסיף זה בוקס קוליידר 2D והוא יודע לבד כמובן לעטוף אותו יפה והדבר האחרון שאני אעשה זה אני אוסיף לו סקריפט אבל לפני זה אני אצור תיקייה לסקריפטים שלנו.
עכשיו אני אגרור את הפלייר קונטרולר לכאן אני אלך לבולט ואני אסיף לו בולט קונטרולר אם אין לי כזה סוג של רכיב שקיים מראש אז האופציה שלי היא של ניו סקריפט וc-sharp יייטן אד וגם אותו אני רוצה לגרור לתוך תיקיית הסקריפט שלי וזהו עכשיו בוא נפתח את הסקריפט ואני רוצה בעצם לעשות כמה דברים אחד מהם זה אני רוצה לתת לו קודם כל מהירות התחלתית אז
לפני שאני, זה אני כותב פה אם אתם זוכרים אז velocity של rigidbody היא וקטור 2 אז אני גם צריך הצבעה על ה rigidbody אבל לפני זה אני רושם פה private וקטור 2 בולט פיד שווה new וקטור 2 ונניח 10.0 ובדרך כלל נהוג לשים את הפאבליק לפני הפרייבט public rigid body 2d rb שומר ובוא נחכה שהוא יופיע לי פה אני גורר שוב את הבולט game object שיש לי עליו rigid body והוא יודע לקחת אותו ועכשיו מה שאני עושה בסטארט
rb נקודה ולוסיטי שווה בולט ספיד ואני שומר את זה וברגע עכשיו שאני אריץ אנחנו נראה שהכדור עף בעצם והוא גם לא מושפע על ידי כוח המשיכה. זה דבר אחד.
מה עוד אני רוצה לעשות בהתחלה? אני הולך לראות הרבה כדורים, ואני לא רוצה שהם יישמרו לי לאורך כל המשחק. אז אני רוצה בעצם להשמיד אותם, שיהיה להם מנגנון השמדה עצמית, ואני אגביל אותו, פשוט אני אגדיר שכל כדור שנוצר, כל קליע שנוצר, הוא חי בעצם למהלך של חמש שניות.
זה יותר ממה שצריך בשביל לעבור את כל המסך. איך אני הורס Game Object? אני קורא לה פונקציה Destroy והיא מקבלת Object. אז אני שולח לה את Game Object שזה לא ה-Class Game Object אלא זה משתנה Game Object שמכיל לי את ה-Game Object שהסקריפט מצורף אליו ואם אני לוחץ על פסיק יש לי פה אופציה לשלוח לפונקציה הזאת גם זמן מתי לעשות את זה וזה
בשניות אז אני אומר לו חמש שניות תשמיד את עצמך אחרי חמש שניות. נלחץ שוב על פליי ואנחנו נראה שאם נספור 5 שניות 1 2 3 שימו לב פה הבולט הזה הולך להיעלם.
הוא נעלם אחרי 5 שניות. Update אני לא צריך מה שאני עוד צריך אבל זה on collision enter כל הנושא של הקוליז'נים מתי שהוא פוגע במשהו אז void on collision on collision enter 2d הוא כבר משלים לי אני גם עושה destroy.
גיים אובג'קט פה בלי דיליי כל הנושא של הפגיעה באויבים וכן הלאה לא נטפל בזה הפעם אבל כרגע פשוט נשמיד אותו ובוא ניקח אותו שיפגע בפלייר שלנו כדי לראות שזה באמת עובד אוקיי אז הוא נעלם אחרי שהוא פוגע במשהו.
דבר אחרון שאני רוצה לעשות זה האפשרות בעצם להגדיר לו לאיזה כיוון הוא הולך אז. אני אגדיר פה public void set direction וזה יקבל פרמטר שהוא בוליאן האם הוא טס ימינה עכשיו if right אז תעשה משהו אחרת תעשה משהו אחר אוקיי אז עכשיו אני למעשה בעצם אוציא את זה מכאן ואני אכניס אותו לכאן ואם זהו אם הוא טס ימינה ואם לא אז אני עושה מינוס בולט ספיד
שוב בולט ספיד הוא 10.0 0 מינוס בולי ספיד זה מינוס 10 פסיק 0 ולפונקציה הזאת אני אקרא כאשר אני יוצר את הקליע אז יצרנו את הקליע שלנו ומה שאני הולך עכשיו לעשות זה ליצור ממנו פריפאב אני מזכיר אני קודם כל אצור תיקיית לא בתוך סקריפט אני אצור תיקיית פריפאב מזכיר שזה גיים אובייקט שאפשר לייצר
בעצם עותקים מהם וברגע שגררתי את הגיים אובייקט לכאן להיררכיה לא משנה לאן אני אגרור אותו יווצר לי פה פריפאב ונעשה אנחנו רואים פה שהבולט הוא בעצם מופע של אותו פריפאב אז אם אני לוחץ פה על סלקט יש פה קישור לפריפאב אני מגיע אליו ואני מזכיר אם אני משנה פה משהו אני יכול לעשות
ויוורט שזה לחזור לערכים המקוריים של הפריפאב או לעשות אפליי וזה אומר שאני משנה את הפריפאב וגם את כל המופעים שלו אוקיי אז עכשיו אחרי שיצרתי פריפאב אני יכול למחוק אותו מכאן.
הדבר הבא שאני הולך לעשות זה לייצר לו בעצם ספונט פוינט. הספונט פוינט שלי הולך להיות בעצם צ'יילד של הפלייר והוא הולך להיות אמפטי גיים אובג'קט.
אז מה שאני הולך לעשות, כפתור ימני על פלייר, create empty, נקרא לו בולט פון ואני אזיז אותו שיהיה ממש פה בקצה של הרובה וזה בעצם הספונט פוינט שלי.
עכשיו אני חוזר לפלייר שלי, לפלייר קונטרולר, ואני מגדיר משתנים שיכילו לי גם את ה-prefab וגם את ה-spawn point. אז אני מגדיר פה public GameObjectsBulletPF בשביל prefab, ו-public GameObjectsBulletSpawnPoint.
אני אשמור ואני אגרור. נחכה שזה יתעדכן. הבולט פריפאב אני גורר את הפריפאב ולבולט ספון פוינט אני גורר את הבולט ספון אוקיי עכשיו אני אגדיר לי את האינפוט אז אני הולך לאדיט project settings input יש לי פה את fire one מוגדר לי left control אני רוצה לשנות אותו ל left alt אתם יכולים לרשום גם ספייס אם בא לכם אני אישית לא אוהב את המכה ספייס
אני שומר אז זה fire one ואני אחזור לפלייר קונטרולר שלי לסקריפט ופה אני אגדיר אני אעתיק את זה עוד פעם ואני אמחק את זה. אני ארשום פה get buttoned down to fire 1. אני לא צריך את האם הוא גראונדד ומה שאני עושה בשביל לייצר