التحجيم
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 25 من 67.
يضرب transform.localScale حجم الكائن على طول كل محور من محاوره. طول كل ضلع في المكعب الافتراضي وحدة واحدة، لذا فإن مكعبًا بقيمة localScale (4, 1, 0.5) عرضه 4 وحدات وارتفاعه وحدة واحدة وعمقه نصف وحدة. للحصول على حجم متساوٍ في جميع الاتجاهات، اضرب Vector3.one، وهي (1, 1, 1). تنمو فقاعة الصابون هذه بمقدار 0.3 في الثانية حتى يصبح عرضها 3 وحدات:
public float size = 1f;
void Update()
{
size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
transform.localScale = Vector3.one * size;
}تعيد Mathf.Min(a, b) العدد الأصغر من العددين، لذا تزداد size حتى تصل إلى 3، ثم تبقى عند 3.
يعمل التحجيم حول نقطة ارتكاز الكائن، وهي في الأشكال المضمنة في Unity المركز. يقع مركز مكعب طول ضلعه وحدة واحدة ومستقر على الأرض عند y = 0.5. إذا جعلت ارتفاعه 3 وحدات، فسيصل إلى 1.5 وحدة فوق ذلك الموضع و1.5 وحدة تحته، لذا سيغوص نصفه في الأرض. لكي يستقر على الأرض، يجب أن يكون مركزه عند نصف ارتفاعه: y = 1.5.
يُضرب حجم الكائن الابن في حجم الكائن الأب: يُرسم الكائن الابن الذي قيمة localScale لديه (1, 1, 1) بضعف حجمه إذا كان أبوه محجّمًا بمقدار 2. تقرأ transform.lossyScale الحجم النهائي في العالم، وهي للقراءة فقط؛ أما localScale فهي القيمة التي تضبطها.
التحدي
متوسطتذوب مكعبات الثلج. منذ بداية اللعبة، ينكمش على كل محور بمقدار melt (0.2) في الثانية، من حجمه 1 إلى 0.4، ثم يبقى بهذا الحجم.
سيؤدي الانكماش حول مركزه إلى بقائه عائمًا، لذا حافظ على ملامسة قاعه للأرض (عند y = 0) طوال الوقت. لا يتغير موضعه على المحورين x وz.
اضغط على Play لمشاهدته وهو يذوب، ثم اضغط على Check.
جرّب بنفسك
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// قلّص الحجم بمقدار melt كل ثانية حتى يصل إلى 0.4، مع إبقاء الجزء السفلي على الأرض
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر