الدفع للخلف
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 54 من 63.
الدفع الارتدادي هو ركلة تُبعد الجسم عمّا اصطدم به: دفعة واحدة على امتداد الخط من الجسم المصطدِم إلى الجسم المصطدَم به. هذا المصدّ يدفع ارتداديًا كل ما يصطدم به:
[SerializeField] private float power = 8f;
void OnCollisionEnter(Collision collision)
{
Vector3 away = collision.transform.position - transform.position;
away.y = 0f;
collision.rigidbody.AddForce(away.normalized * power, ForceMode.Impulse);
}يشير collision.transform.position - transform.position من المصدّ إلى الجسم الذي اصطدم به. تُضبط قيمة y إلى 0 لكي تبقى الركلة أفقية، وتجعل normalized مقدارها ثابتًا مهما كانت المسافة بين مركزي الجسمين. ForceMode.Impulse ركلة تحدث مرة واحدة: تغيّر السرعة بمقدار power مقسومًا على الكتلة، دفعة واحدة، لذا تنطلق كرة كتلتها 2 بنصف سرعة كرة كتلتها 1. أما ForceMode.Force الافتراضي، فهو مخصّص للتطبيق في كل خطوة، ويعطي مقدار خطوة واحدة، أي أقل 50 مرة.
لا تدوم الركلة إلا ما دام لا شيء يستبدل السرعة. اللاعب الذي يضبط rb.linearVelocity في FixedUpdate استنادًا إلى الأسهم في كل خطوة، يفقد أثرها بعد خطوة واحدة، لذا يجب على سكربت كهذا أن يترك السرعة كما هي للحظة بعد الاصطدام، أو أن يحرّك اللاعب باستخدام القوى.
التحدي
متوسطيمكن للاعب إطلاق موجة صدمة. اكتب سكربت Shockwave على اللاعب. يتيح Inspector ضبط radius (4) وpower (6) وlift (2). سكربت Player جاهز: تحرّك الأسهم اللاعب.
- عند الضغط على Space، اعثر على كل مصادم ضمن
radiusمن اللاعب باستخدامPhysics.OverlapSphere. - كل مصادم لديه Rigidbody، باستثناء اللاعب نفسه، يتلقى Impulse:
powerمباشرةً بعيدًا عن اللاعب عبر الأرض، بالإضافة إلىliftإلى الأعلى. - تُترك المصادمات التي لا تحتوي على Rigidbody، مثل الأرض، دون تغيير.
اضغط على Play، وتحرك بين الصناديق واضغط على Space، ثم Check.
جرّب بنفسك
using UnityEngine;
public class Shockwave : MonoBehaviour
{
[SerializeField] private float radius = 4f;
[SerializeField] private float power = 6f;
[SerializeField] private float lift = 2f;
void Update()
{
// عند الضغط على Space: ادفع كل Rigidbody ضمن radius بعيدًا عن اللاعب
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق