مدى المدفع
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 61 من 63.
يقف مدفع عند أحد طرفي ميدان الرماية، وتنزلق ثلاثة أهداف من جانب إلى آخر عبر الميدان على مسافات مختلفة. أمل البندقية إلى الأعلى والأسفل للوصول إلى كل مسافة، وحدد توقيت كل طلقة بحيث تُطلق عندما يعبر هدفٌ خط النار. الكرة التي تصيب هدفًا تُخرجه من اللعبة وتُستهلك؛ أما أي شيء آخر يصطدم بهدف فيتركه دون أن يمسه. الأهداف أجسام حركية، لذا لا تدفعها الاصطدامات أبدًا، ويحمل المدفع خمس كرات.
اكتب نصين برمجيين: Cannon على السبطانة وTarget على كل هدف.
التحدي
صعبيمنح Inspector مكوّن Cannon القيمة ballPrefab (وهو Rigidbody: قالب الكرة، كتلته 2، ووسمه Ball)، وangle (30)، وturnSpeed (40)، وpower (30)، وballs (5).
- يرفع السهم للأعلى قيمة
angleويخفضها السهم للأسفل، بمعدلturnSpeedدرجة في الثانية، من دون أن تقل عن 10 أو تزيد على 60. في كل إطار، اضبط دوران السبطانة إلىQuaternion.Euler(-angle, 0, 0): في Unity، تجعل زاوية x موجبة المقدمة تميل إلى الأسفل، لذا فإن إشارة الطرح تجعلها تميل إلى الأعلى. - يطلق مفتاح المسافة كرة ما دامت قيمة
ballsأكبر من 0: أنشئها على بُعد وحدة واحدة أمام مركز السبطانة، بمحاذاة السبطانة، وادفعها بقوة Impulse مقدارهاpowerبمحاذاة السبطانة، وأنقصballsبمقدار 1 وسجّل العدد المتبقي، مثلBalls left: 4. إذا لم تبقَ أي كرات، فلن يفعل مفتاح المسافة شيئًا.
لكل هدف مكوّن Rigidbody حركي، ويحدّد Inspector لمكوّن Target قيمتي speed وrange (2 و3 للهدف Target1).
- في كل خطوة فيزيائية، حرّك الهدف على محور x باستخدام
MovePositionبسرعةspeedوحدة في الثانية، وغيّر اتجاهه كلما ابتعد بمقدارrangeعن موضع بدايته. - عندما تصطدم كرة (تحمل الوسم
Ball) بالهدف، سجّل اسم الهدف وhit!، مثلTarget2 hit!، ثم أتلف الهدف والكرة معًا. أما أي شيء ليس كرة فلا يؤثر فيه.
اضغط Play وأسقط الأهداف الثلاثة، ثم اضغط Check.
جرّب بنفسك
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 للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق