استشراف الحركة
جزء من قسم الفيزياء وأسلوب اللعب في رحلة 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 في الإطار السابق، واترك الاتجاه كما هو في الإطار الذي لم يتحرك فيه، كي يحتفظ القارب الساكن بإزاحته الأمامية.
التحدي
متوسطاجعل الكاميرا الجانبية تُظهر مساحة أكبر في الاتجاه الذي يركض إليه اللاعب.
- في
LateUpdate()، قارن قيمة x للاعب معlastX: اجعل التحرك إلى اليمين يضبطdirectionعلى 1، والتحرك إلى اليسار على -1، واتركها كما هي عند الوقوف دون حركة. - حرّك
shift = Mathf.MoveTowards(shift, direction * ahead, shiftSpeed * Time.deltaTime);. - اضبط قيمة 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);
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity