PracticU

הזזת מצלמה

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

הזזת מצלמה
השיעור מסביר איך לגרום למצלמה לעקוב אחרי השחקן, ולהוסיף לה גבולות ותנועה חלקה. זו הדרך לבנות שלבים גדולים מהמסך הנראה.
השלבים העיקריים
1. מעקב בסיסי: בסקריפט של המצלמה נשמר רפרנס לשחקן, ובכל עדכון המיקום של המצלמה מתעדכן לפי המיקום של השחקן בציר X ו-Y בלבד. ציר Z נשאר קבוע, כך שהמצלמה נשארת מאחורי השחקן ולא מסתירה אותו.
2. גבול תחתון: אם גובה המצלמה היה נמוך מ-0, הוא מוגדר ל-0, כך שהמצלמה לא יורדת מתחת לאדמה.
3. הגבלה בפקודה אחת: במקום בדיקת תנאי אפשר להשתמש ב-Mathf.Clamp ולהגדיר טווח בין 0 ל-100 בציר Y.
4. תנועה חלקה: במקום להציב את המצלמה ישירות במיקום השחקן, משתמשים ב-Vector3.Lerp עם Time.deltaTime כפול 5. כך המצלמה זזה בהדרגה, וזה נראה נעים יותר לעין.
5. רקע: מומלץ להשתמש בטקסטורה חוזרת שאפשר לשכפל ללא רואים את הקצוות, כמו שעשינו עם האריחים.
שימו לב
בסוף השיעור המרצה מוסיף לשלב שער ניצחון ומאפשר לצפות בתנועה של המצלמה שעולה מעל מלכודות אבל לא יורדת מתחת לאפס.
השיעור הבא בקורס: שער הניצחון ומעבר לשלב הבא

פרקי ההרצאה: הזזת מצלמה

  1. 00:00

    ארגון הסקריפטים והפריפאבים של הדמויות

  2. 00:39

    סקריפט מעקב מצלמה אחרי השחקן

  3. 01:36

    הפניה לשחקן וגישה למיקומו

  4. 02:24

    עדכון מיקום המצלמה בלי וקטורים חדשים

  5. 03:14

    עומק המצלמה (Z) מאחורי השחקן

  6. 04:39

    הגבלת המצלמה כך שלא תרד מתחת לאפס

  7. 05:34

    הגבלת המצלמה בגובה מקסימלי

תמלול ההרצאה: הזזת מצלמה

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

  1. 00:02

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

  2. 00:41

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

  3. 01:17

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

  4. 01:44

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

  5. 02:09

    אוקיי עכשיו מה שאני עושה באפדייט זה transform.position ובוא נעשה טוב new כבר כבר תיקנתי את הטעות הזאת בעבר לא ליצור וקטור זה אז בואו פשוט כן נעשה את ניצור לנו משתנה private וקטור 3 new pause ועכשיו שווה new וקטור 3 באפדייט new pause נקודה x שווה player נקודה x נקודה

  6. 03:06

    transform נקודה position נקודה x אותו דבר ב-y ועכשיו אני מסתכל למאמין קאמרה היא מינוס 10 אז אני אגדיר פה גם כן private float camera z pause שווה מינוס 10f וnew pause נקודה z שווה camera pause נקודה z ועכשיו טרנספורם נקודה פוזישן שווה ניו פוזישן ניו פוז זהו פחות או יותר זה בשביל שנראה את השחקן

  7. 03:49

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

  8. 04:39

    שהמצלמה לא תזוז מתחת לנקודה הזאת שבה רואים את האדמה אז אני יכול להגדיר פה if new pose.y תתן מ-0 אז new pose.y שווה 0.

  9. 05:07

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

  10. 05:46

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

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

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

ההרצאה הבאה: שער הניצחון ומעבר לשלב הבא

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

  • מצלמה - חלק 1 - צילום תמונה

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

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