Vector3 بنية Struct
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 29 من 85.
Vector3 هو struct، وهو نوع لم تتعرّف إليه من قبل. البنية قيمة، مثل int: إسنادها ينسخها بالكامل. بعد Vector3 b = a; b.x = 9;، لا تتغير قيمة a.x، لأن b نسخة منفصلة. (أما الصنف فيعمل بطريقة معاكسة: يمكن لمتغيرين أن يشيرا إلى كائن واحد مشترك.)
transform.position خاصية، وقراءتها تمنحك نسخة من الموضع. لذا فإن transform.position.x = 0; سيغيّر نسخةً يتم التخلص منها فورًا، ويرفض C# ترجمتها: error CS1612: Cannot modify the return value of 'Transform.position' because it is not a variable. الحل هو نسخ الموضع، وتغيير النسخة، ثم إسنادها من جديد. يعيد هذا العداء إلى المسار الأوسط عند الضغط على Space:
if (Input.GetKeyDown(KeyCode.Space))
{
Vector3 p = transform.position; // انسخ
p.x = 0; // عدّل النسخة
transform.position = p; // أعِد إسنادها
}إذا حذفت السطر الأخير، فستُترجم الشيفرة، لكن لن يتحرك شيء: الذي تغيّر هو النسخة فقط. تعمل transform.localScale وخصائص Vector3 الأخرى بالطريقة نفسها.
التحدي
سهلاجعل نصّ الزلّاجة البرمجي يُترجم بنجاح، بحيث تبقى على الأرض وبين الجدارين.
- استبدل السطرين اللذين يضبطان
transform.position.yو.xبنسخة:Vector3 p = transform.position;. - اضبط
p.y = Mathf.Max(p.y, 0.5f);وp.x = Mathf.Clamp(p.x, -4f, 4f);، ثمtransform.position = p;.
اضغط «العب»: ستهبط الزلّاجة على الأرض وسيوقفها الجداران. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class Sled : MonoBehaviour
{
public float speed = 4f;
public float fall = 3f;
void Update()
{
float h = Input.GetAxisRaw("Horizontal");
transform.position += new Vector3(h * speed, -fall, 0) * Time.deltaTime;
// أبقِ الزلاجة على الأرض وبين الجدران.
transform.position.y = Mathf.Max(transform.position.y, 0.5f);
transform.position.x = Mathf.Clamp(transform.position.x, -4f, 4f);
}
}
جميع دروس أساسيات البرمجة النصية في Unity
1أساسيات C# في Unity
مرحبًا يا Unityالمتغيراتالأعداد العشرية تحتاج إلى fالنص في وحدة التحكممتغيرات تتذكرإذا وإلامقارنة الأعدادمراجعة: جامع العملات7الحلقات والدوال
التكرار باستخدام forحلقات داخل حلقاتكتابة دالةدوال تُعيد إجابةالمصفوفاتمراجعة: السُّلّم5المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي والعالميالسرعة القُطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: قيادة الطائرة المسيّرة8كائنات اللعبة والمكوّنات
المراجع في Inspectorالحصول على مكوّنالمكوّنات المفقودةإضافة مكوّنRequireComponentالإظهار والإخفاءمراجعة: مفتاح الإضاءة6التحويلات والتسلسل الهرمي
الآباء والأبناءارفع العلمالتحجيمانظر إلى الأشياءتحرّك نحو نقطةمراجعة: القمر في مدارهتدرّب بنفسك: Playground لـ Unity