تحرّك نحو نقطة
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 35 من 85.
تعيد 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.
- أضف الحقلين
bool flying;وbool landed;. عندInput.GetKeyDown(KeyCode.Space)، عيّنflying = true;. - ما دام
flying && !landed، حرّكها باستخدامVector3.MoveTowards(transform.position, pad, speed * Time.deltaTime). - عندما تصبح
transform.position == pad، عيّنlandedوسجّلLanded.
اضغط على «العب»، ثم على Space: ستهبط الطائرة المسيّرة على المنصة. ثم اضغط على «تحقق».
جرّب بنفسك
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أساسيات C# في Unity
مرحبًا يا Unityالمتغيراتالأعداد العشرية تحتاج إلى fالنص في وحدة التحكممتغيرات تتذكرإذا وإلامقارنة الأعدادمراجعة: جامع العملات7الحلقات والدوال
التكرار باستخدام forحلقات داخل حلقاتكتابة دالةدوال تُعيد إجابةالمصفوفاتمراجعة: السُّلّم5المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي والعالميالسرعة القُطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: قيادة الطائرة المسيّرة8كائنات اللعبة والمكوّنات
المراجع في Inspectorالحصول على مكوّنالمكوّنات المفقودةإضافة مكوّنRequireComponentالإظهار والإخفاءمراجعة: مفتاح الإضاءة6التحويلات والتسلسل الهرمي
الآباء والأبناءارفع العلمالتحجيمانظر إلى الأشياءتحرّك نحو نقطةمراجعة: القمر في مدارهتدرّب بنفسك: Playground لـ Unity