الجدار
الدرس 5 من 16 في دورة لعبة Unity: تحطيم الطوب على Coddy.
تنتظم الطوبات في شبكة: صفوف من الأعلى إلى الأسفل، وأعمدة من اليسار إلى اليمين، وكل واحدة نسخة من قالب طوبة أُنشئت داخل حلقتين متداخلتين. يُحدَّد موضع الطوبة من رقمي صفها وعمودها مضروبين في المسافة بين مراكز الطوبات، وهي حجم الطوبة مضافًا إليه فراغ صغير.
لتوسيط شبكة عند x = 0، احسب موضع العمود الأول. بين n أعمدة توجد n ناقص 1 من الفجوات، لذا عندما تكون المسافة s، تفصل مسافة (n - 1) * s بين المركزين الطرفيين، ويقع الأول على يسار المنتصف بنصف هذه المسافة. خمسة أعمدة سياج، تفصل بينها وحدتان:
int posts = 5;
float spacing = 2f;
float left = -(posts - 1) * spacing / 2f;
for (int i = 0; i < posts; i++)
{
Instantiate(postPrefab, new Vector3(left + i * spacing, 0f, 3f), Quaternion.identity);
}تقع عند -4 و-2 و0 و2 و4: العمود الأول عند -4، وليس -5، لأن أربع فجوات تفصل بين خمسة أعمدة. يضع الوسيط الرابع في Instantiate، وهو Transform أب، كل نسخة تحت كائن واحد لتبقى نافذة Hierarchy مرتبة. عندما يكون نوع حقل القالب سكربتًا، مثل Brick، تُعيد Instantiate سكربت النسخة الجديدة، لتكون جاهزة للاستخدام.
التحدي
متوسطابنِ الجدار في GameManager:
- أضف
public Brick brickPrefabوpublic Transform wall(يربط المشهد بين العنصر الجاهز Brick وكائن Wall)، وpublic int rows = 5، وpublic int columns = 9، وpublic float spacingX = 1.75f، وpublic float spacingY = 0.75fوpublic float topY = 6f. - اكتب
void BuildWall(): أنشئ لبنة لكل صف وعمود، واجعلها عنصرًا فرعيًا لـwall. يكون الصف 0 عند y =topY، ويكون كل صف أدنى بمقدارspacingY. تفصل بين الأعمدة مسافةspacingXوتكون متمركزة حول x = 0. ضع اللبنات عند z = 0. - استدعِ
BuildWall()منStart().
اضغط Play واجعل الكرة ترتد عن الجدار (اللبنات لا تنكسر بعد)، ثم اضغط Check.
جرّب بنفسك
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
void Awake()
{
Instance = this;
}
// لاحقًا: جدار الطوب، والنقاط، والأرواح، والمستويات.
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.