פנה לכיוון שבו אתה נע
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 44 מתוך 71.
transform.LookAt זקוקה לנקודה להביט אליה. לעיתים קרובות, במקום זאת, יש לך כיוון: מהירות, הרוח, הכיוון שבו משהו נע. Quaternion.LookRotation(direction) מחזירה סיבוב שבו הכיוון הקדמי (חץ ה־z הכחול) מצביע לאורך הכיוון הזה, והכיוון למעלה של האובייקט נשאר לכיוון מעלה של העולם. חץ שנורה לאוויר מצביע תחילה למעלה ונוטה הצידה כשהוא נופל, כי המהירות שלו עושה זאת:
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (rb.linearVelocity != Vector3.zero)
{
transform.rotation = Quaternion.LookRotation(rb.linearVelocity);
}
}רק הכיוון קובע, לא האורך: (1, 0, 2) ו־(3, 0, 6) נותנים את אותו סיבוב. לווקטור אפס אין כיוון, לכן LookRotation(Vector3.zero) מתעדת ביומן Look rotation viewing vector is zero ומחזירה את Quaternion.identity, שמסובבת את האובייקט כך שיפנה אל +z. לכן החץ בודק קודם: כשהוא נעצר, הוא נשאר בכיוון שאליו פנה. LookAt(target.position) נותנת את אותו סיבוב כמו LookRotation(target.position - transform.position).
החלק של הכיוון שמצביע מעלה או מטה מטה את הכיוון הקדמי איתו למעלה או למטה. עבור משהו שחייב להישאר זקוף, כמו הולך שעולה במדרון, יש להגדיר תחילה את y של הכיוון ל־0, כך שהאובייקט יסתובב רק סביב y. ארגומנט שני, LookRotation(direction, Vector3.up), מציין איזה כיוון הוא מעלה; זה הכיוון שמתקבל כברירת מחדל אם לא מציינים אותו.
אתגר
בינוניגרום לדבורה לפנות לכיוון שבו היא עפה, תוך שמירה על תנוחה זקופה.
- בתוך
LateUpdate(), הגדרVector3 direction = transform.position - lastPosition;וגםdirection.y = 0;. - רק כאשר
direction != Vector3.zero, הגדרtransform.rotation = Quaternion.LookRotation(direction);, כדי שדבורה שנחה תשמור על הכיוון שאליו היא פונה. - לבסוף, שמור את
transform.positionבתוךlastPosition.
לחץ על „שחק”: הדבורה פונה לכיוון כל פרח שאליו היא עפה. לאחר מכן לחץ על „בדיקה”.
נסו בעצמכם
using UnityEngine;
public class FaceMotion : MonoBehaviour
{
Vector3 lastPosition;
void Start()
{
lastPosition = transform.position;
}
void LateUpdate()
{
// פנה לכיוון שאליו הדבורה נעה מאז הפריים הקודם.
}
}
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין