Menu
CoddyTech

انظر إلى الأشياء

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

تُدير transform.LookAt(point) الجسم بحيث يشير محوره الأمامي، وهو السهم الأزرق للمحور z، إلى موضع في العالم. إنها تُدير الجسم ولا تحرّكه. يقع هذا الكشّاف على برج عند (0, 6, 0) ويوجّه ضوءه نحو البوابة عند (4, 0, 10):

void Start()
{
    transform.LookAt(new Vector3(4, 0, 10));
}

تقع البوابة أسفل الضوء، لذا يميل الكشّاف إلى الأسفل بالإضافة إلى دورانه: يوجّه LookAt الجسم مباشرةً نحو النقطة، سواء كانت أعلى أم أسفل. بعد ذلك، يشير transform.forward من الضوء نحو البوابة.

عند استدعاء LookAt في Start()، يوجّه الجسم مرة واحدة. وعند استدعائه في Update()، يوجّه الجسم من جديد في كل إطار، لذلك يظل الجسم مواجهًا للنقطة بينما يتحرك الجسم أو النقطة. وسيطها دائمًا موضع: يوجّه LookAt(Vector3.forward) الجسم نحو نقطة العالم (0, 0, 1)، وهي بقعة بجوار مركز العالم، أينما كان الجسم.

challenge icon

التحدي

متوسط

اجعل العربة الجوالة تواجه الاتجاه الذي تتحرك فيه.

  1. أسفل التعليق في Update()، اكتب if (move != Vector3.zero)، لكي تحافظ العربة الجوالة المتوقفة على اتجاهها.
  2. داخلها، استدعِ transform.LookAt(transform.position + move);.

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

جرّب بنفسك

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 3f;

    void Update()
    {
        Vector3 move = Vector3.zero;
        if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
        if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
        if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
        if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
        move = move.normalized;
        transform.position += move * speed * Time.deltaTime;
        // أدِر المركبة الجوالة لتواجه الاتجاه الذي تسير فيه
    }
}

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

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