Menu
CoddyTech

أدِره كل ثانية

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

تدير transform.Rotate(x, y, z) كائن GameObject بعدد الدرجات هذا حول كل محور من محاوره. عند استدعائها في Update()، تديره قليلًا في كل إطار، لذلك يستمر الكائن في الدوران.

لكن كم عدد الإطارات في الثانية؟ قد يكون العدد 120 على حاسوب سريع، و30 على هاتف. ستدور transform.Rotate(0, 0, 5) العادية أسرع بأربع مرات على الحاسوب السريع. حل Unity هو Time.deltaTime: الثواني التي مضت منذ الإطار الأخير. اضرب سرعةً فيه، وستعني السرعة في الثانية على كل جهاز.

تدور عجلة هنا حول محورها z بمقدار 45 درجة كل ثانية:

public float speed = 45f;

void Update()
{
    transform.Rotate(0, 0, speed * Time.deltaTime);
}

عند 60 إطارًا في الثانية، تكون قيمة Time.deltaTime نحو 0.0167، لذا يدور الجسم في كل إطار بمقدار 45 * 0.0167، أي نحو 0.75 درجة، ومجموع 60 مرة منها يساوي 45. وعند 30 إطارًا في الثانية، يدور الجسم في كل إطار مسافة مضاعفة، ويظل المجموع بعد ثانية واحدة 45.

challenge icon

التحدي

سهل

اجعل المكعب يدور حول محوره y بمقدار speed درجة في الثانية.

  1. في Update()، استدعِ transform.Rotate(x, y, z).
  2. ضع speed * Time.deltaTime في الرقم الأوسط، لمحور y، وضع 0 لمحوري x وz. دارت العجلة أعلاه حول z؛ أما هذا المكعب فيدور حول y.

اضغط على «العب»: يدور المكعب ربع دورة كل ثانية. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        // أدر المكعب حول محوره y هنا
    }
}

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

تدرّب بنفسك: Playground لـ Unity