مدى المدفع
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 66 من 71.
يوجد مدفع عند أحد طرفَي ميدان الرماية، وتتحرك ثلاثة أهداف ذهابًا وإيابًا عبر الميدان على مسافات مختلفة. أملِ البرميل إلى أعلى وأسفل للوصول إلى كل مسافة، وأطلِق كل طلقة في الوقت الذي يعبر فيه هدفٌ خط النار. الكرة التي تصيب هدفًا تُخرجه من الميدان وتُستهلك؛ أما أي شيء آخر يصطدم بهدف فيتركه دون أن يتأثر. الأهداف أجسام حركية، لذا لا تدفعها الاصطدامات أبدًا، ويحمل المدفع خمس كرات.
اكتب نصَّين برمجيَّين: Cannon على البرميل وTarget على كل هدف.
التحدي
صعباكتب مدفعًا: وجّهه، ثم أطلق خمس كرات.
- في
Update()، أضفInput.GetAxisRaw("Vertical") * turnSpeed * Time.deltaTimeإلىangle، وقيّده بين 10 و60، واضبطtransform.rotation = Quaternion.Euler(-angle, 0f, 0f);. - عند الضغط على Space بينما
balls > 0، أنشئballPrefabعندtransform.position + transform.forward، وطبّقAddForce(transform.forward * power, ForceMode.Impulse). - أنقص 1 من
ballsوسجّل"Balls left: " + balls.
اضغط «العب» وأطلق. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class Cannon : MonoBehaviour
{
[SerializeField] private Rigidbody ballPrefab;
[SerializeField] private float angle = 30f;
[SerializeField] private float turnSpeed = 40f;
[SerializeField] private float power = 30f;
[SerializeField] private int balls = 5;
void Update()
{
// صوّب باستخدام سهمَي الأعلى والأسفل، وأطلق النار باستخدام Space
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity