الأعداد العشرية و 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النص في وحدة التحكممتغيرات تتذكرإذا وإلامقارنة الأعدادمراجعة: جامع العملات7الحلقات والدوال
التكرار باستخدام forحلقات داخل حلقاتكتابة دالةدوال تُعيد إجابةالمصفوفاتمراجعة: السُّلّم5المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي والعالميالسرعة القُطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: قيادة الطائرة المسيّرة8كائنات اللعبة والمكوّنات
المراجع في Inspectorالحصول على مكوّنالمكوّنات المفقودةإضافة مكوّنRequireComponentالإظهار والإخفاءمراجعة: مفتاح الإضاءة6التحويلات والتسلسل الهرمي
الآباء والأبناءارفع العلمالتحجيمانظر إلى الأشياءتحرّك نحو نقطةمراجعة: القمر في مدارهتدرّب بنفسك: Playground لـ Unity