מספרים מסוג Float ו־Mathf
חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 16 מתוך 85.
פגשתם את f ב״מספרים עשרוניים צריכים f״: C# קוראת את 0.5 כ-double, ו-Unity סופרת ב-float. אותו הדבר קורה גם בחישובים. System.Math פועלת עם מספרים מסוג double, ולכן float s = Math.Sin(x); נכשלת עם CS0266: Cannot implicitly convert type 'double' to 'float'.
ל-Unity יש גרסת float של הספרייה, Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. המצוף המתנדנד הזה נכשל עם שתי השגיאות, ולאחר השינוי הקוד מתקמפל:
// לפני: float y = 1 + Math.Sin(Time.time * 2) * 0.5;
float y = 1 + Mathf.Sin(Time.time * 2) * 0.5f;
transform.position = new Vector3(0, y, 0);מספרים שלמים כמו 1 ו-2 אינם זקוקים לסיומת: int הופך ל-float בלי שום אובדן מידע.
אתגר
קלתקנו את הסקריפט של הלב כך שיתקמפל ויפעם שוב.
- בשורה של
size, החליפו אתMath.AbsואתMath.Sinב-Mathf.Absוב-Mathf.Sin. - החליפו את
0.5ב-0.5f, והשאירו את שאר הנוסחה ללא שינוי.
לחצו על "שחק": הלב גדל מ-1 ל-1.5 וחוזר, בערך פעם בשנייה. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using System;
using UnityEngine;
public class Pulse : MonoBehaviour
{
void Update()
{
float size = 1 + Math.Abs(Math.Sin(Time.time * 3)) * 0.5;
transform.localScale = new Vector3(size, size, size);
}
}
כל השיעורים ביחידה יסודות הסקריפטים ב-Unity
1יסודות C# ב-Unity
שלום, Unityמשתניםמספרים עשרוניים צריכים fטקסט ב-Consoleמשתנים ששומרים ערכיםאם ואחרתהשוואת מספריםחזרה: אוסף המטבעות5וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן8אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהחזרה: מתג תאורה6טרנספורמציות והיררכיה
הורים וילדיםלהניף את הדגלקנה מידהלהסתכל על דבריםלנוע לעבר נקודהסיכום: הירח המקיף12מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: יומן מחזור החייםתרגלו בעצמכם: Unity אונליין