Menu
CoddyTech

استشراف الحركة

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

تُظهر الكاميرا المتمركزة على لاعب متحرك مقدارًا من المكان الذي مرّ به بقدر ما تُظهر المكان الذي يتجه إليه. ويمكن أن تسبق الكاميرا الجانبية اللاعب بدلًا من ذلك: اجعلها على بُعد بضع وحدات أمام اللاعب، من الجهة التي يتجه نحوها.

يتبدل الجانب عندما يستدير اللاعب، والإزاحة الأمامية التي تتبدل فورًا تجعل المشهد كله يقفز. لذا احتفظ بالإزاحة الأمامية في حقل، وحرّكها تدريجيًا نحو قيمتها الجديدة باستخدام Mathf.MoveTowards، قليلًا في كل إطار. تتقدم هذه الكاميرا الخاصة بالقارب بمقدار وحدتين، وتتحرك تدريجيًا بسرعة 3 وحدات في الثانية:

float lead;
float heading = 1f;   // 1 للإبحار يمينًا، -1 للإبحار يسارًا

void LateUpdate()
{
    lead = Mathf.MoveTowards(lead, heading * 2f, 3f * Time.deltaTime);
    transform.position = new Vector3(boat.position.x + lead, transform.position.y, transform.position.z);
}

الاتجاه هو الجهة التي تحرك فيها القارب آخر مرة: قارن إحداثي x له بإحداثيه x في الإطار السابق، واترك الاتجاه كما هو في الإطار الذي لم يتحرك فيه، كي يحتفظ القارب الساكن بإزاحته الأمامية.

challenge icon

التحدي

متوسط

اجعل الكاميرا الجانبية تُظهر مساحة أكبر في الاتجاه الذي يركض إليه اللاعب.

  1. في LateUpdate()، قارن قيمة x للاعب مع lastX: اجعل التحرك إلى اليمين يضبط direction على 1، والتحرك إلى اليسار على -1، واتركها كما هي عند الوقوف دون حركة.
  2. حرّك shift = Mathf.MoveTowards(shift, direction * ahead, shiftSpeed * Time.deltaTime);.
  3. اضبط قيمة x للكاميرا على player.position.x + shift، مع الإبقاء على y وz.

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

جرّب بنفسك

using UnityEngine;

public class LookAheadCamera : MonoBehaviour
{
    public Transform player;
    public float ahead = 3f;
    public float shiftSpeed = 4f;

    void LateUpdate()
    {
        // اجعل الكاميرا تتقدّم اللاعب بمقدار ahead من الوحدات في اتجاه حركته الأخيرة، مع الانزلاق بسرعة shiftSpeed.
        transform.position = new Vector3(player.position.x, transform.position.y, transform.position.z);
    }
}

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

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