Menu
CoddyTech

מספרים מסוג 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 בלי שום אובדן מידע.

challenge icon

אתגר

קל

תקנו את הסקריפט של הלב כך שיתקמפל ויפעם שוב.

  1. בשורה של size, החליפו את Math.Abs ואת Math.Sin ב-Mathf.Abs וב-Mathf.Sin.
  2. החליפו את 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

תרגלו בעצמכם: Unity אונליין