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

أدر بسلاسة

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 43 من 63.

إن ضبط transform.rotation مباشرةً على دوران جديد يجعل الكائن يدور في إطار واحد. تُرجع Quaternion.RotateTowards(current, goal, maxDegrees) قيمة current بعد تدويرها باتجاه goal بحد أقصى maxDegrees، ولا تتجاوز الهدف أبدًا. باستخدام turnSpeed * Time.deltaTime كخطوة، يدور الكائن بمعدل ثابت ويتوقف تمامًا عند هدفه، كما تفعل MoveTowards مع المواقع. تتبع زهرة دوّار الشمس هذه الشمس بمعدل 30 درجة في الثانية:

public Transform sun;
public float turnSpeed = 30f;

void Update()
{
    Quaternion goal = Quaternion.LookRotation(sun.position - transform.position);
    transform.rotation = Quaternion.RotateTowards(transform.rotation, goal, turnSpeed * Time.deltaTime);
}

إذا كانت الشمس تبعد 90 درجة، فسيستغرق وصول زهرة دوّار الشمس إليها 3 ثوانٍ، بمعدل 30 درجة في كل مرة. تدور في أقصر مسار، ويُعاد حساب الهدف في كل إطار، لذا فهي تتبع الشمس إذا تحركت.

Quaternion.Slerp(a, b, t) هو الدوران الذي يقع على بُعد جزء t من المسافة من a إلى b، كما هو الحال مع Vector3.Lerp للنقاط. وعند كتابته بالشكل Slerp(transform.rotation, goal, 5f * Time.deltaTime) داخل Update()، فإنه يدور بمقدار جزء من الزاوية المتبقية في كل إطار: بسرعة في البداية، ثم يتباطأ تدريجيًا كلما اقترب من الهدف، ولا يكون أبدًا بسرعة ثابتة ولا يصل تمامًا إلى الهدف. يناسب هذا التباطؤ حركة كاميرا أو التفات رأس. عندما يكون معدل الدوران قاعدة في اللعبة، مثل مدفع يدور 60 درجة في الثانية، استخدم RotateTowards.

challenge icon

التحدي

متوسط

تدور البومة لتنظر إلى الاتجاه الذي تشير إليه. يمنحها كل سهم اتجاهًا جديدًا لتنظر نحوه: الأعلى +z، اليمين +x، الأسفل -z، اليسار -x. عند الضغط على أحد الأسهم، تبدأ بالدوران نحو ذلك الاتجاه بسرعة turnSpeed (180) درجة في الثانية، بمعدل ثابت، وتُكمل الدوران حتى بعد إفلات المفتاح، وتتوقف تمامًا عند الاتجاه الجديد.

اضغط على Play، ثم اضغط على الأسهم، ثم Check.

جرّب بنفسك

using UnityEngine;

public class Owl : MonoBehaviour
{
    public float turnSpeed = 180f;

    void Update()
    {
        // أعلى، يمين، أسفل، يسار: استدر لتواجه +z، +x، -z، -x بسرعة turnSpeed درجة في الثانية.
    }
}
quiz iconاختبر نفسك

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

جميع دروس الفيزياء وأسلوب اللعب