Menu
CoddyTech
flag Ar iconالعربيةdown icon

الآباء والأبناء

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

في Hierarchy، يصبح الكائن الذي يُسحب فوق كائن آخر ابنًا له، ويظهر بمسافة بادئة أسفل الأب. يتحرك الابن ويدور ويتغير حجمه مع أبيه: حرّك الأب، وسيتبعه كل أبنائه، من دون الحاجة إلى كتابة أي شيفرة للأبناء.

يخزّن Unity موضع الابن بالنسبة إلى أبيه. يمثّل transform.localPosition هذا الإزاحة، مقاسةً من الأب؛ أما transform.position فيمثّل الموضع في العالم. هذا الفارس ابنٌ لحصان، ويضعه السكربت على ارتفاع وحدة واحدة فوق مركز الحصان ونصف وحدة إلى الخلف، أينما كان الحصان:

void Start()
{
    transform.localPosition = new Vector3(0, 1, -0.5f);
}

عندما يكون الحصان عند (4, 0.5, 2)، تكون قيمة position للفارس (4, 1.5, 1.5)، بينما تظل قيمة localPosition لديه (0, 1, -0.5). عندما يواصل الحصان المشي، تتغير position ولا تتغير localPosition. تُقاس الإزاحة على امتداد محاور الأب نفسه، لذا عندما يدور الأب أو يتغير حجمه، تدور الإزاحة ويتغير حجمها معه. بالنسبة إلى كائن ليس له أب، تكون localPosition وposition متطابقتين.

challenge icon

التحدي

متوسط

العَلَم ابنٌ للسفينة، والسفينة ليست في مركز العالم. المقصود من Start() الخاص بالعَلَم هو وضعه عند قاعدة الصاري، على بُعد 0.6 إلى اليمين و1 إلى الأعلى بالنسبة إلى السفينة، لكنه يكتب هذه الأرقام في position، لذلك ينتهي العَلَم بعيدًا عن السفينة.

  • أصلح Start() ليبدأ العَلَم عند قاعدة الصاري.
  • أثناء الضغط على سهم الأعلى، ارفع العَلَم: يصعد بمعدل climb وحدة في الثانية حتى يصبح ارتفاعه بالنسبة إلى السفينة 4، أي قمة الصاري، ثم يتوقف هناك.

اضغط تشغيل، واستمر بالضغط على سهم الأعلى، ثم اضغط تحقّق.

جرّب بنفسك

using UnityEngine;

public class Hoist : MonoBehaviour
{
    public float climb = 1f;

    void Start()
    {
        // قاعدة الصاري: 0.6 إلى اليمين و1 إلى الأعلى، قياسًا من Ship
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // ما دام سهم الأعلى مضغوطًا، اصعد حتى يصبح الارتفاع عن Ship مساويًا لـ4
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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