-->
random

آخر المواضيع

random
recent
جاري التحميل ...
recent

شرح برنماج اليونيتي Unity لتصميم العاب

 شرح برنماج اليونيتي Unity لتصميم العاب



تتمة للدرس الاول حول اليونيتي من هنا 
اسفل الدرس السابق هناك اساسيات البرنماج مهمة جدا

السلام عليكم ورحمة الله ونبدا مباشرة 

بعد تنصيب اليونيتي نسخة personel المجانية وانشاء new project سيكون لدينا برنمجين احدهما فيه ارقام ويدخلك مباشرة الى البرنماج والاخر Unity Hub ومن خلاله حين نختار Learn يعطينا مجموعة من الالعاب الجاهزة للتعلم منها او استغلالها
اثناء اختيار نوع المشروع 2D او 3D اذا كنت اعطاك عدة انواع من 3D فنحن نختار النوع 3D Sample Scene URP ولدينا في خيار Core بعد الضغط على على مشروع جديد يمكن ان تختار نوع المشهد و المنظور للعبة ولكن ليس من الضرورة الالتزام بهذه الاشياء لانه يمكن ان تختار نوع 2D وتعدل عليه ليصبح 3D لا مشكلة
عند الدخول لدينا في اعلى البرنماج كلمة Asset Store ندخل اليها هنا متجر لاشياء التي يمكن تضيفها الى مشروعك اذا نحن سنختار 3D بالاعلى ثم في القائمة سنختار by unity يعني الاضافات التي توفرها لنا الشركة ندخل نبحث عن اي اضافة تريد نحن نختار اضافة starter assets third person المنظور ثلاثي الابعاد اكب الاسم في البحث اضغط عليه ثم اضغط Add to my assets ثم open in unity ثم سياخذك الى البرنماج وتضغط download للتحميل الملفات ثم add to project لاضافتها ثم تحديث upgrade install وتنصيب سيطلب منا عمل اعادة تشغيل نقول لا ثم ثم نضغط import 
حين ندخل نضغط على اسم الملف الملف startedثم thirdperson ثم ملق المشاهد scenes folder سيعطينا المشهد وردي ولذلك نذهب الى قائمة window ثم rendering ثم render pipeline converter ثم نتاك هل الخيار الاول فيه Built-in URP ثم نضع علامة في النوافد الثلاثة ثم نضغط على convert assets فيقوم بتحويل المشهد الى مشهد مناسب
لفهم طريقة عمل اشكال هناك الطريقة العادية من خلال نافذة Hierarchy نضغط علامة زائد ثم اختيار 3D object ونختار الشكل
ولكن لفهم اكثر حول موضوع انشاء الاشكال نختار create empty سيعطينا صندوق مخفي لا يظهر نضغط اداة move كي نحرك الشكل الخفي حتى يكون واضح مكانه ثم في جانب الشاشة inspector لدينا اعدادات سنضغط Add component ثم نختار Mesh Filter ثم نضغط على الدائرة الصغيرة جدا امام خيار Box وسيعطينا اختيار الشكل في بعض الاشكال ثم سنلاحظ انه لا يظهر بعد ثم لذلك سنحتاج الى Add component ثم نختار Mesh Renderer وهكذا يظهر لدينا الشكل 
اما كي نغير اللون نقوم بنفس الطريقة التي تم شرحها سابقا وهي من قائمة project نضغط زائد ثم Material وسيعطينا كرات الالوان تلونها ب اي لون تريد على الجانب وتسحبها مباشرة لفوق الشكل 
حين نضغط على Material لدينا في اعدادته شيء مهم وهو shader بالضغط على المستطيل امامه يمكننا البحث عن نوع التاثير الذي نريده في اللون مثلا اذا كتبتا texture سيعطينا نوع عادي من الاضافة ويعطيك اختيار شكل العنصر تيكستر اما اذا كتبنا مثلا 
واذا اخترنا مثلا نوع standart يعطينا خيارات اخرى لكيفية تفاعل الشكل مع الاضاءة وغير ذلك سنجد مثلا ايقونة صغيرة امام كلمة Albedo نضغط عليها نختار شكل الذي سيظهر به اللون
وكما في الشرح السابق يمكنك مع اضافة الmesh يمكننا اضافة نضيف كذلك Rigidbody يقوم بعمل خواص فزيائية للشكل 
سنلاحظ انه لا يملك شكل فزيائي لذلك نضغط add component مرة اخرى ونختار مثلا sphere collider ثم في خانة Mesh بالجانب نضغط الدائرة الصغيرة ونختار مثلا شكل shphere يعني دائري وهكذا يتغير الشكل مباشرة
يمكننا انشاء مشاهد لامحدودة بالضغط على علامة زائد في نافذة المشروع project ثم تختار scene ودوبل كليك للدخول الى المشهد الجديد
نستطيع اخذ ايقونة المشهد game نسحبها ونضعها بجانب كي نستطيع رؤية ما تراه الكاميرة في المشهد 
مثال لعبة :
نفتح مشروع جديد ننشء صندوق نضع له في scale اعدادات الحجم X 50 و Z100 يصير لدينا مستطيل عريض جدا نعطيه اسم ground الان نقوم بتدوير وتحريك الارضية حتى تظهر كالطريق بالمشهد الان نستخرج الصندوقcube ونحركه الى امام الكاميرة في اتجاه الطريق  نعطيه اسم flyer مثلا ثم نلونه كما شرحنا سابقا الان كي نعطيه خصائص فزيائية كما شرحنا نضيف add component ونختار Rigidbody ويصير متفاعل اما خيار collider لمنع اختراق الشكل للاجسام الصلبة اما الmesh تتحكم في رسم او تواجد العنصر وخيارات transform لضبط اماكن الاشكال وحجمها بشكل دقيق كما قلما سابقا دائرة صغيرة في نافذة الmesh تعطينا تغيير الشكل واذا اخترنا مثلا الكرة سنلاحظ انها كرة غير سوية كي نجعلها كرة جيدة بكل بساطة في خيار الtransform نضغط يمين الماوس ونختار reset وتعود الكرة لحجمها المعتدل ولكن حين نحركها سنلاحظ انها تتحرك مثل الصندوق لذلك كي تتحرك معنا مثل الكرة سنلغي box collider ونضيف sphere collider
اما لتغيير منظر السماء الزرقاء في المشهد نضغط على MainCamera ثم في اعداداتها لدينا خيار Skybox نغييره الى solid color ثم نختار اللون الذي نريده حول المشهد 
حين اضغط على مشهد ثم shift+space سوف يقوم بتكبير المشهد لك للرؤية جيدا 
الان نذهب الى file ثم حفظ المشهد ونسميه مثلا level1 وسيعطينا ايقونة المشهد اسفل الشاشة وهذا يسهل عليك الانتقال بين المستويات والتعديل عليها 
كي نبدا في اعطاء اوامر برمجية للاشياء باللعبة نضغط على العنصر ثم على الجانب نضغط Add component ثم  new script ونعطي اسم للسكريبت نسميه مثلا playermovment وهنا نلاحظ ان سكريبتات تكون عبارة عن ملفات يمكن سحبها وافلاتها فوق اي عنصر فتتفعل عليه نفس الاوامر 
الان دوبل كليك على الملف وسيفتح معنا مباشرة برنماج الاكواد visual studio 
سيعطينا مكان void start نضع فيها كل الاكواد التي تستخذم في كل مرة ابدا اللعبة وفي لغة C# لا يهم اذا كان هناك فراغات بين الكلمات تستطيع حتى كتابة كل كود في سطر لوحده الان سنعطي امر بسيط لنتاكد ان اليونيتي يقراء الكود الذي نكتبه 
using UnityEngine;

public class playermovment : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
      ;Debug.Log("hello world yasin")  
    }

    // Update is called once per frame
    void Update()
    {
       
    }
}

كتبنا الامر Debug ونضغط ctrl+s للقيام بحفظ التغييرات او من القائمة file ثم save حتي يعمل قراءة للكود, والان نذهب للبرنماج وكما شرحنا سابقا دائما الاحرف الكبيرة تكتب كبيرة وكل سطر يجب ان ينتهي بفاصلة منقوطة نكتب بين مزدوجتين كلمة "hello world" ثم نعود للبرنماج نضغط play ومن نافذة console يجب تظهر الكلمة التي كتبنها بالكود ان لم يظهر عندك نافذة console ستجدها من قائمة النوافذ window ثم console تستطيع اضافة ما لا ناهاية من الوظائف في اليونيتي مما يعطيك لا حدود مما تستطيع انشائه 
الان اول خطوة سنفعلها هي نقوم بتعريف الشكل الذي سنجري عليه تغييرات داخل الكود وكي نفعل ذلك سنتجه الى فوق دالة void start اعلى منها سنكتب التالي 

public class playermovment : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    ;public Rigidbody rb
    void Start()
    {

سنلاحظ ظهور ملف عندنا بالبرنماج بنفس الاسم عندما نضغط على الكيوب وننزل في اعادادات السكريبت الذي قمنا بانشائه الى الاسفل هناك مستطيل يظهر امام خيار rb 
الان سنسحب Rigidbody الخاص بالشكل ونضعه فوق هذا الاخير اللي اسمه rb الان كلنا ذكرنا rb في الكود سوف يعرف ان المقصود هو هذا العنصر الذي وضعناه فيه ولا ننسى عمل حفظ للمشروع كي ينجح الكود في العمل من file نختار save اذا لم يعمل الكود حاول التاكد من وجود rigidbodey داخل مربع السكريبت احيانا تجد الملف لم يعد بداخل السكريبت لذلك لا يعمل معك الكود
الان لو جربنا وكتبنا كود ايقاف الجاذبية داخل دالة void start 
;rb.useGravity=false  

سنلاحظ ان الجاذبية توقفت تماما لاننا اعطينها امر false فلو اعطينها true ستعمل 
واذا كتبنا في مكانها الامر التالي 
;rb.AddForce(0, 200, 500)

فاننا نلاحظ ان هناك قوة مطبقة على الشكل وللتوضيح الصفر هو اتجاه X و 200 اتجاه Y و 500 اتجاه Z 
البرنماج مجرد كتابة ارقام هكذا يعلم مباشرة انك تقصد الاتجاهات الثلاثة 
الان اذا مسحنا دالة void start وقمنا بوضع الكود التالي في دالة update بالشكل التالي 

using UnityEngine;

public class playermovment : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    public Rigidbody rb;
   

    // Update is called once per frame
    void Update()
    {
       rb.AddForce(0, 0, 2000
* Time.deltaTime);  
    }
}


سنلاحظ انه كود يقوم بتدحرج الشكل للوراء ويستمر في التحرك للامام بلا نهاية كانها الرياح تجر الصندوق بعيدا
لكن كي نجعل الشكل يتحرك بشكل مباشر فوق الطريق من اعدادات Rigidbody وفي خيار constrains نضع علامة في x من خيار Rotation لكن افضل طريقة للقيام بالامر هو بالقيام بضغط يمين الماوس ثم create ثم نختار physics material 
ثم في اعدادات هذا العنصر سنقوم بتحويل اعدادات dynamic و static الى الصفر والان نسحب هذا العنصر ونضعه فوق الارضية في المشهذ وسيعطينا نفس حركة تحرك الصندوق بشكل زلق على الارضية 
الان للتحكم اكثر بحركة الشكل علينا تخزينه بالذاكرة وهذا يعني استعمال المتغايير لان المتغاييرات كما راينا سابقا هي مثل صناديق تخزين للبيانات تخزن فيها كل ما يتحرك باللعبة للتحكم في حركته ووقت حركته ووقت توقفه عن الحركة طيلة مدة اللعبة 
وهنا سنضيف هذا الكود فوق دالة void update بالاعلى بالشكل التالي : 

public Rigidbody rb;

    public float forwordforce = 2000f;

    // Start is called once before the first execution of Update after the MonoBehaviour is created
   

    // Update is called once per frame
    void Update()
    {
      rb.AddForce(0, 0, forwordforce * Time.deltaTime);  
    }

في دالة update نقوم بوضع اسم التخزين forwordforce مثلا في مكان 2000 التي وضعنها سابقا

اذا ضغطنا الان على الصندوق سنجد بان اصبح لدينا مستطيع forwordforce للتحكم بقوة الدفع يمكننا جعل الحركة سريعة او بطيئة 
الان للتحكم في تحرك الصندوق نضيف الكود التالي في دالة void  على الشكل التالي 
كود تحريك لليمين بواسطة الضغط على حرف d

 void Update()
    {
      rb.AddForce(0, 0, forwordforce * Time.deltaTime);

      if(Input.GetKey("d")) {

        rb.AddForce(500 * Time.deltaTime, 0, 0);
      }

    }

اما كي نضيف الزر الثاني لليسار نقوم بنسخ الكود بالشكل التالي مع مراعات الاقواس واحجام الحروف مهم جدا كان عندي مشكلة فب الكود حتى لاحظت غياب احد الاقواس بالكود 

void Update()
    {
      rb.AddForce(0, 0, forwordforce * Time.deltaTime);

      if(Input.GetKey("d")) {

        rb.AddForce(500 * Time.deltaTime, 0, 0);  
      }
if(Input.GetKey("a"))
 {

        rb.AddForce(-500 * Time.deltaTime, 0, 0);
    }
    }
}









سيتم اضافة معلومات جديدة مع مرور الوقت 
اترك لي دعوة من قلبك
بالتوفيق للجميع 


التعليقات



إذا أعجبك محتوى مدونتنا نتمنى البقاء على تواصل دائم ، فقط قم بإدخال بريدك الإلكتروني للإشتراك في بريد المدونة السريع ليصلك جديد المدونة أولاً بأول ، كما يمكنك إرسال رساله بالضغط على الزر المجاور ...

إتصل بنا

جميع الحقوق محفوظة

Yassine Agourram

2016