הסתובב בצורה חלקה
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 43 מתוך 63.
הצבת transform.rotation ישירות לסיבוב חדש מסובבת אובייקט בפריים אחד. Quaternion.RotateTowards(current, goal, maxDegrees) מחזירה את current כשהוא מסובב לכיוון goal בלא יותר מ-maxDegrees, ולעולם לא מעבר ליעד. כאשר משתמשים ב-turnSpeed * Time.deltaTime כצעד, האובייקט מסתובב בקצב קבוע ועוצר בדיוק ביעד שלו, כמו ש-MoveTowards עושה עבור מיקומים. החמנייה הזאת עוקבת אחרי השמש בקצב של 30 מעלות לשנייה:
public Transform sun;
public float turnSpeed = 30f;
void Update()
{
Quaternion goal = Quaternion.LookRotation(sun.position - transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, goal, turnSpeed * Time.deltaTime);
}אם השמש נמצאת במרחק של 90 מעלות, לחמנייה יידרשו 3 שניות להסתובב אליה, 30 מעלות בכל שנייה. היא מסתובבת בדרך הקצרה, והיעד מחושב מחדש בכל פריים, כך שהיא עוקבת אחר שמש בתנועה.
Quaternion.Slerp(a, b, t) היא הסיבוב שנמצא במרחק של חלק t מהדרך מ-a ל-b, כפי ש-Vector3.Lerp עושה עבור נקודות. כשכותבים Slerp(transform.rotation, goal, 5f * Time.deltaTime) בתוך Update(), הפונקציה מסובבת חלק מהזווית הנותרת בכל פריים: מהר בהתחלה, ואז לאט יותר ויותר ככל שמתקרבים ליעד, לעולם לא במהירות קבועה ולעולם לא מגיעה אליו ממש. ההאטה הזאת מתאימה למצלמה או לסיבוב ראש. כאשר קצב הסיבוב הוא כלל במשחק, כמו תותח שמסתובב 60 מעלות בשנייה, השתמשו ב-RotateTowards.
אתגר
בינוניהינשוף מסתובב כדי להביט בכיוון שאליו את מצביעה. כל חץ נותן לו כיוון חדש לפנות אליו: למעלה +z, ימינה +x, למטה -z, שמאלה -x. בלחיצה הוא מתחיל להסתובב לכיוון הזה במהירות של turnSpeed (180) מעלות לשנייה, בקצב קבוע, ומשלים את הסיבוב גם אחרי שמשחררים את המקש, ועוצר בדיוק בכיוון החדש.
לחצי על Play, לחצי על החצים ואז על Check.
נסו בעצמכם
using UnityEngine;
public class Owl : MonoBehaviour
{
public float turnSpeed = 180f;
void Update()
{
// למעלה, ימינה, למטה, שמאלה: הסתובב כדי לפנות לכיוון +z, +x, -z, -x במהירות של turnSpeed מעלות לשנייה.
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף