הסתובב בכל שנייה
חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 4 מתוך 67.
transform.Rotate(x, y, z) מסובבת GameObject במספר המעלות הזה סביב כל אחד מהצירים שלו. כשקוראים לה בתוך Update(), היא מסובבת מעט בכל פריים, כך שהאובייקט ממשיך להסתובב.
אבל כמה פריימים יש בשנייה? במחשב מהיר אולי 120, ובטלפון אולי 30. transform.Rotate(0, 0, 5) פשוטה תסובב אותו מהר פי ארבעה במחשב המהיר. הפתרון של Unity הוא Time.deltaTime: מספר השניות שחלפו מאז הפריים האחרון. כשמכפילים בו מהירות, המהירות היא לשנייה, בכל מכשיר.
כאן גלגל מסתובב סביב ציר ה-z שלו, 45 מעלות בכל שנייה:
public float speed = 45f;
void Update()
{
transform.Rotate(0, 0, speed * Time.deltaTime);
}בקצב של 60 פריימים בשנייה, Time.deltaTime הוא בערך 0.0167, כך שבכל פריים הגלגל מסתובב ב-45 * 0.0167, בערך 0.75 מעלות, ו-60 פריימים כאלה מסתכמים ב-45. בקצב של 30 פריימים בשנייה, הגלגל מסתובב בכל פריים פי שניים, ובכל זאת, אחרי שנייה מתקבל סך של 45.
אתגר
קללקובייה יש סקריפט Spinner עם speed של 90. בתוך Update(), גרמו לקובייה להסתובב סביב ציר ה-y שלה, speed מעלות בכל שנייה, בכל מכשיר.
לחצו על Play כדי לצפות, ואז על Check.
נסו בעצמכם
using UnityEngine;
public class Spinner : MonoBehaviour
{
public float speed = 90f;
void Update()
{
// סובבו כאן את הקובייה סביב ציר ה-y שלה
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות התכנות ב-Unity
1הסקריפט הראשון שלך
שלום, Unityהצב את הקובייהזוז בכל פרייםהסתובב בכל שנייהנווט בעזרת המקשיםסיכום: נהג בקובייה4וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן10מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: מתעד מחזור החיים