מצלמת מסלול
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 46 מתוך 63.
כדי להקיף נקודה, שמרו זווית, סובבו בעזרתה היסט קבוע והוסיפו את התוצאה לנקודה. כפל סיבוב בווקטור מבצע את הסיבוב: Quaternion.Euler(0, angle, 0) * offset מסובב את ההיסט סביב ציר y, ואורכו וגובהו נשארים זהים. המצלמה הזאת מקיפה פסל במהירות של 20 מעלות לשנייה, תמיד בגובה 3 יחידות ובמרחק 6 יחידות ממנו:
public Transform statue;
public float speed = 20f;
float angle;
void LateUpdate()
{
angle += speed * Time.deltaTime;
Vector3 offset = new Vector3(0, 3, -6);
transform.position = statue.position + Quaternion.Euler(0, angle, 0) * offset;
transform.LookAt(statue);
}בזווית 0 ההיסט הוא (0, 3, -6), ולכן המצלמה נמצאת מאחורי הפסל. בזווית 90 ההיסט הוא (-6, 3, 0), בצד ה־-x של הפסל, ובזווית 180 הוא (0, 3, 6), מלפניו. הזזת המצלמה אינה מסובבת אותה, ולכן LookAt מכוונת אותה בחזרה אל הפסל מכל מיקום חדש.
הזווית נשמרת בשדה משלכם, כמו בזוויות אוילר: היא יכולה לגדול מעבר ל־360 או לרדת מתחת ל־0 בלי קפיצה, ואפשר להגביל אותה או לשנות אותה מהמקלדת. ביצוע הפעולה בתוך LateUpdate() מציב את המצלמה אחרי שהפסל, או השחקן, זז במהלך הפריים.
אתגר
בינוניאפשר לשחקן להטיס את המצלמה סביב המגדל, תמיד במרחק של distance (8) יחידות ממיקום המגדל ותמיד כשהיא מביטה אליו. הסקריפט שומר שתי זוויות ב-yaw וב-pitch:
yawמציין עד כמה המצלמה הסתובבה סביב המגדל. החץ ימינה מגדיל את הזווית והחץ שמאלה מקטין אותה, בקצב שלturnSpeed(90) מעלות לשנייה. כשה-yaw הוא 0, המצלמה נמצאת בצד -z של המגדל; כשה-yaw הוא 90, היא נמצאת בצד -x.pitchמציין בכמה מעלות המצלמה מורמת מעל לגובה המגדל, מנקודת מבטו של המגדל. החץ למעלה מגדיל את הזווית והחץ למטה מקטין אותה, בקצב שלtiltSpeed(45) מעלות לשנייה, והיא נשארת בין 10 ל-60.
היא מתחילה ב-yaw של 0 וב-pitch של 30, מה שממקם אותה 4 יחידות מעל מיקום המגדל ו-6.93 יחידות מאחוריו. לחץ על הפעלה, הטס את המצלמה מסביב ואז לחץ על בדיקה.
נסו בעצמכם
using UnityEngine;
public class OrbitCamera : MonoBehaviour
{
public Transform target;
public float distance = 8f;
public float turnSpeed = 90f;
public float tiltSpeed = 45f;
public float yaw = 0f;
public float pitch = 30f;
void Update()
{
// מקשי החצים משנים את yaw ואת pitch.
}
void LateUpdate()
{
// מקם את המצלמה סביב target וכוונן אותה כך שתביט בו.
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף