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

المسافة بين الأشياء

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

Vector3.Distance(a, b) هي المسافة بين نقطتين، بوحدات القياس، محسوبةً على خط مستقيم عبر المحاور الثلاثة. وهي طول الخطوة بينهما، (a - b).magnitude، لذا لا يهم ترتيب a وb. المسافة من (0, 0, 0) إلى (3, 0, 4) هي 5.

قارن المسافة برقم، وسيعرف البرنامج النصي متى يكون شيء ما قريبًا. يستطيع هذا المخيّم تدفئة يديه فقط عندما يكون على بُعد 4 وحدات من نار المخيّم، التي يضبط موضعها Inspector:

public Vector3 campfire = new Vector3(3, 0, 4);

void Update()
{
    float d = Vector3.Distance(transform.position, campfire);
    if (d < 4f && Input.GetKeyDown(KeyCode.Space))
    {
        Debug.Log("You warm your hands");
    }
}

تحتسب المسافة الارتفاع أيضًا: فالمخيّم الذي يقع على ارتفاع 5 وحدات فوق النار يبعد عنها 5 وحدات، وليس 0. عندما لا ينبغي احتساب الارتفاع، قارن بين نقطتين لهما قيمة y نفسها.

challenge icon

التحدي

سهل

يعبر المتجول مستنقعًا. عندما يكون على بُعد 3 وحدات من مركز المستنقع، swamp (المُعيَّن في Inspector)، يتحرك بنصف speed؛ وعندما يكون أبعد من ذلك، يتحرك بكامل السرعة. كود الحركة مكتوب: حدّد السرعة التي يجب استخدامها في كل إطار، واترك حقل speed نفسه دون تغيير.

اضغط على Play وسِر عبر المستنقع، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;
    public Vector3 swamp = new Vector3(0, 0.5f, 0);

    void Update()
    {
        float s = speed;
        // عندما تكون على بُعد 3 وحدات أو أقل من المستنقع، تحرّك بنصف السرعة.

        Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        transform.position += direction.normalized * s * Time.deltaTime;
    }
}
quiz iconاختبر نفسك

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

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