Menu
CoddyTech

السرعة القُطرية

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

اضغط على السهمين الأيمن والأعلى معًا، وستعطي المحاور الخام الاتجاه (1, 0, 1). طول هذا المتجه، .magnitude، هو الجذر التربيعي لـ 1 + 1، أي نحو 1.41. يقطع كائن يتحرك بواسطته 1.41 وحدة قطريًا في الوقت الذي يقطع فيه وحدة واحدة إلى الأمام مباشرة: أسرع بنسبة 41%.

تعطي .normalized نسخةً من متجه تشير إلى الاتجاه نفسه ويبلغ طولها وحدة واحدة بالضبط: يصبح (1, 0, 1) نحو (0.71, 0, 0.71)، ويصبح (0, 0, 5) هو (0, 0, 1). عند ضربه في سرعة، يتحرك بهذه السرعة مهما كان الاتجاه. تطير هذه النحلة نحو الزهرة بسرعة وحدتين في الثانية، سواء أكانت الزهرة بعيدة أم قريبة؛ ومن دون .normalized، ستطير أسرع كلما ابتعدت الزهرة:

public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;

void Update()
{
    Vector3 toFlower = flower - transform.position;
    transform.position += toFlower.normalized * speed * Time.deltaTime;
}

يبقى Vector3.zero.normalized هو (0, 0, 0)، لأن الصفر ليس له اتجاه. لا تغيّر v.normalized قيمة v؛ أما v.Normalize() فتغيّر v نفسها.

challenge icon

التحدي

سهل

اجعل الشخصية المتحركة تتحرك بالسرعة نفسها قطريًا.

  1. داخل Update()، أنشئ Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));.
  2. أضف direction.normalized * speed * Time.deltaTime إلى transform.position.

اضغط «العب» مع الاستمرار في الضغط على سهمين: ستتحرك الشخصية قطريًا بسرعة لا تزيد على سرعتها عند التحرك مباشرة. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // مفاتيح الأسهم أو WASD: تحرّك على المحورين x وz بسرعة speed نفسها، حتى عند التحرك قطريًا.
    }
}

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

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