التحرك نحو نقطة
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 27 من 67.
تعيد Vector3.MoveTowards(current, target, maxStep) نقطةً أقرب إلى target بمقدار يصل إلى maxStep. وعندما يكون الهدف أقرب من ذلك، فإنها تعيد الهدف نفسه، لذا لا تتجاوزه أبدًا. باستخدام speed * Time.deltaTime كخطوة، يتحرك الجسم بسرعة ثابتة ويتوقف تمامًا عند الهدف. تنساب عربة التلفريك هذه إلى محطتها بسرعة وحدتين في الثانية:
public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}بعد وصولها، تعيد كل استدعاءة لاحقة station مرة أخرى، لذا تبقى العربة في مكانها، وتكون transform.position == station صحيحة. بالنسبة إلى رقم واحد، تعمل Mathf.MoveTowards بالطريقة نفسها.
Vector3.Lerp(a, b, t) هي النقطة التي تبعد جزءًا t من المسافة من a إلى b: عندما تكون t = 0.5، تكون في المنتصف. عند كتابتها بالشكل Lerp(transform.position, station, 2f * Time.deltaTime) في Update()، فإنها تقطع جزءًا من المسافة المتبقية في كل إطار: بسرعة في البداية، ثم ببطء متزايد قرب النهاية، مقتربةً أكثر فأكثر بدلًا من الوصول بسرعة محددة. استخدم MoveTowards عندما يجب أن يتحرك الجسم بسرعة محددة ويتوقف تمامًا؛ واستخدم نمط Lerp هذا للتباطؤ التدريجي السلس.
التحدي
متوسطتظل الطائرة المسيّرة معلّقة في الهواء حتى تضغط على Space. بعد ذلك، تطير في خط مستقيم إلى pad، وهو موضع منصة الهبوط، بسرعة speed وحدة في الثانية، وتهبط عليها تمامًا. عند هبوطها، تسجّل Landed مرة واحدة، وليس مجددًا في كل إطار بعد ذلك.
اضغط على Play، ثم اضغط على Space، ثم Check.
جرّب بنفسك
using UnityEngine;
public class Drone : MonoBehaviour
{
public Vector3 pad = new Vector3(0, 0.25f, 0);
public float speed = 2f;
void Update()
{
// بعد الضغط على Space: طر إلى pad بسرعة speed، وسجّل Landed مرة واحدة عند الوصول
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر