Menu
CoddyTech

الفضاء المحلي والعالمي

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

للكائن اتجاهاته الخاصة بالإضافة إلى اتجاهات العالم. يشير transform.forward إلى الاتجاه الذي يتجه إليه أنف الكائن (السهم الأزرق في نافذة Scene في Unity)، ويُمثَّل بمتجه عالمي طوله وحدة واحدة؛ أما transform.right وtransform.up فيمثّلان اتجاهي اليمين والأعلى الخاصين به. أدر الكائن، فتدور هذه الاتجاهات معه. هذه الطائرة الورقية مدارة بزاوية 90 درجة حول y في المشهد، لذا تطير على محور x العالمي، في الاتجاه الذي تشير إليه:

public float speed = 4f;

void Update()
{
    transform.position += transform.forward * speed * Time.deltaTime;
}

ينفّذ transform.Translate(Vector3.forward * speed * Time.deltaTime) الأمر نفسه، لأن Translate يقرأ متجهها في الفضاء الخاص بالكائن: حيث تعني Vector3.forward الاتجاه الأمامي للكائن. مرّر Space.World كوسيط ثانٍ، وسيستخدم محاور العالم بدلاً من ذلك؛ لذا فإن transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) يحرّك الطائرة على محور z العالمي، أيًّا كان الاتجاه الذي تشير إليه.

يدير transform.Rotate الكائن أيضًا حول محاوره الخاصة. عند النظر من الأعلى، تدير زاوية موجبة حول y كائنًا قائمًا إلى يمينه، وتديره زاوية سالبة إلى يساره، ويدور معها transform.forward الخاص به.

challenge icon

التحدي

سهل

امنح الدبابة عناصر تحكم الدبابات: تدور في مكانها، وتتقدم في الاتجاه الذي تواجهه.

  1. في Update()، أثناء الضغط على سهم اليمين، استخدم transform.Rotate(0, turn * Time.deltaTime, 0);، واستخدم -turn مع سهم اليسار.
  2. أثناء الضغط على سهم الأعلى، استخدم transform.Translate(Vector3.forward * speed * Time.deltaTime);.

اضغط على «العب»، ثم استدر وقد الدبابة: ستتجه إلى حيث يشير مقدّمها. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // سهمَا اليمين واليسار: أدر الدبابة حول المحور y. سهم الأعلى: حرّك الدبابة في الاتجاه الذي تواجهه.
    }
}

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

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