Menu
CoddyTech

الأعداد العشرية و 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

تدرّب بنفسك: Playground لـ Unity