Menu
CoddyTech

التحجيم

جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 33 من 85.

يضاعف transform.localScale حجم الكائن على طول كل محور من محاوره. طول كل ضلع في المكعب الافتراضي وحدة واحدة، لذا يكون عرض المكعب الذي قيمة localScale له هي (4, 1, 0.5) أربع وحدات، وارتفاعه وحدة واحدة، وعمقه نصف وحدة. للحصول على حجم موحّد، اضرب في 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، ثم يبقى عندها.

يحدث تغيير الحجم حول محور ارتكاز الكائن، الذي يقع في مركز الأشكال المضمّنة في Unity. يقع مركز مكعب طول ضلعه وحدة واحدة، يستقر على الأرض، عند y = 0.5. إذا غيّرت حجمه ليصبح ارتفاعه 3 وحدات، فسيصل إلى 1.5 وحدة فوق ذلك المركز و1.5 وحدة تحته، لذا سيغوص نصفه في الأرض. ولكي يستقر على الأرض، يجب أن يكون مركزه عند نصف ارتفاعه: y = 1.5.

يُضرب حجم العنصر الابن في حجم العنصر الأب: يُرسم العنصر الابن الذي قيمة localScale له هي (1, 1, 1) تحت عنصر أب جرى تكبيره بمقدار 2، بضعف حجمه. تقرأ transform.lossyScale الحجم النهائي في العالم، وهي للقراءة فقط؛ أما localScale فهي القيمة التي تضبطها.

challenge icon

التحدي

متوسط

قلّص مكعب الثلج حتى 0.4، مع إبقائه على الأرض.

  1. أضف حقلًا float size = 1f;. في Update()، عيّن size = Mathf.Max(size - melt * Time.deltaTime, 0.4f);.
  2. عيّن transform.localScale = Vector3.one * size;.
  3. أبقِ قاعدته عند y = 0: عيّن قيمة y للموضع إلى size / 2، مع الإبقاء على x وz.

اضغط على «العب»: ينكمش المكعب ويبقى على الأرض. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class Melt : MonoBehaviour
{
    public float melt = 0.2f;

    void Update()
    {
        // قلّص الحجم بمقدار melt كل ثانية حتى يصل إلى 0.4، مع إبقاء القاعدة على الأرض
    }
}

جميع دروس أساسيات البرمجة النصية في Unity

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