הסתובבו בכל שנייה
חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 11 מתוך 85.
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.
אתגר
קלגרום לקובייה להסתובב סביב ציר ה־y שלה במהירות של speed מעלות בשנייה.
- בתוך
Update(), קרא ל־transform.Rotate(x, y, z). - שים את
speed * Time.deltaTimeבמספר האמצעי, עבור y, ואת0עבור x ו־z. הגלגל שמעל הסתובב סביב z; הקובייה הזאת מסתובבת סביב y.
לחץ על „שחק“: הקובייה מבצעת רבע סיבוב בכל שנייה. לאחר מכן לחץ על „בדיקה“.
נסו בעצמכם
using UnityEngine;
public class Spinner : MonoBehaviour
{
public float speed = 90f;
void Update()
{
// סובבו כאן את הקובייה סביב ציר ה-y שלה
}
}
כל השיעורים ביחידה יסודות הסקריפטים ב-Unity
1יסודות C# ב-Unity
שלום, Unityמשתניםמספרים עשרוניים צריכים fטקסט ב-Consoleמשתנים ששומרים ערכיםאם ואחרתהשוואת מספריםחזרה: אוסף המטבעות5וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן8אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהחזרה: מתג תאורה6טרנספורמציות והיררכיה
הורים וילדיםלהניף את הדגלקנה מידהלהסתכל על דבריםלנוע לעבר נקודהסיכום: הירח המקיף12מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: יומן מחזור החייםתרגלו בעצמכם: Unity אונליין