المسافة بين الأشياء
جزء من قسم أساسيات البرمجة النصية في 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 نفسها.
التحدي
سهليعبر المتجول مستنقعًا. عندما يكون على بُعد 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;
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب4المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي وفضاء العالمالسرعة القطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: طيار الطائرة المسيّرة5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر