Jump to
Press alt + / to open this menu
CommunitySee All
Highlights info row image
1,799 people like this
Highlights info row image
1,808 people follow this
Photos
Posts

لاسئلتكم واستفساراتكم حول Unity في هذا المنشور
** التعليقات التي تخالف الشروط ادناه سيتم حذفها**
-------------------------- الشروط -------------------------------
قبل ان تبدأ بطرح سؤوالك، تأكد من انك تعلمت اليونتي وتابعت دورات التعليم المدرجة في الاسفل (على الاقل دورتنا على قناة المعلم) ثم يمكنك طرح اسئلتك هنا فيما يتعلق بالدورات . متبعاً الارشادات التالية:

...

1- الاخلال باي من الارشادات التالية ينتج عنه تجاهل سؤوالك / حذف السؤوال / حظر من الصفحة!
2- اطرح اسئلتك فيما يتعلق بدورات "المعلم" وسنجيب عليها بكل سرور
3- ان اي سؤوال ليس له علاقة بدورة "المعلم" لنا حق عدم الاجابة عليه!
4- ان اي سؤوال تم تناوله بدورة "المعلم" سيتم تجاهله وهو دليل انك لم تتعلم!
5- المشاكل التقنية لانقوم بحلها - عليك ان تتواصل مع موقع اليونتي نفسهم -
6- اخيراً. عليك ان تكتب سؤوالك بشكل واضح - ارفاق صورة واضحة ان تطلب الامر.
7- اكتب مشكلتك في تعليق واحد. اذا احتجت المزيد من التفصيل لنفس المشكلة! لاتكتب تعليق جديد. يكفيك فقط ان تقوم بالرد على تعليقك الخاص حتى لايتشتت الموضوع!

------------------------ الدورات -----------------------
قبل طرح سؤوالك واذا كنت جديداً في اليونتي يرجى منك متابعة دوراتنا التعليمية البسيطة من هنا:
https://www.youtube.com/playlist…

وباقي الدورات في القناة يرجى الاطلاع عليها "دورة الهاتف + دورة لعبة ثنائية الابعاد + التنصيص - برمجة - سي شارب في اليونتي وغيرها"

---------------- دورات اخرى------------------------
دورات موقع اليونتي ستفيدك بتقوية مهاراتك وتعلم مهارات جديدة في اليونتي
https://unity3d.com/learn/tutorials
دروس تدريبية لليونتي، متجددة وتضاف لها دروس باستمرار. يمكنك تعلم السابق وانتظار الجديد دائماً.
https://unity3d.com/learn/live-training

احد الاشخاص الذين تم ادراج بعض دروسهم القوية في موقع يونتي يمكنكم الوصول لقناته وتعلم المزيد وبالاخص في بناء الخرائط بشكل اوتوماتيكي
https://www.youtube.com/user/Cercopithecan/playlists

دورات مكتوبة وليس فيديو من احد العاملين في يونتي على موقعه الخاص
http://catlikecoding.com/unity/tutorials/
كما انه يركز ايضاً على الكثير من دروس التوليد الاجرائي. مثل بناء الخرائط والمناطق بشكل اوتوماتيكي في الكود
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

See More
هذه مجموعة مفتوحة لتعليم صناعة الألعاب للمبتدئين تماماً. شاهد هذه المجموعة كاملةً قبل أن تسأل عن أي شيء، فهي إن شاء الله تتيح لمستخدم كمبيوتر عادي أن يصبح صا...
youtube.com

تعلم الالة في يونتي
https://www.youtube.com/watch?v=fq0JBaiCYNA

This demo showcases "Simultaneous Single-Agent" training. Where multiple independent agents with independent reward functions linked to a single brain.
youtube.com
Reviews
6 Reviews
Tell people what you think
Posts

لغات البرمجة المختلفة ليست هذه:
Java, C, C++, C#, JavaScript, PHP, Python,............

بل هذه:
Imperative: (for example: C, Pascal)...
Functional: (for example: LISP, Scheme)
Logic: (for example: Prolog, تستعمل في برمجة قواعد البيانات والذكاء الاصطناعي)

Object-oriented: (for example: Java,C++)
Markup: (ليست لغات برمجة، لكنها لغات تنسيقية وهي مثل: html,css)

تعلم لغة واحدة من كل نوع يعطيك نظرة شاملة على هذا النوع، ما يجعل تعلمك للغة ثانية من نفس النوع امر سهل وبسيط. فتعلمك لسي بلس بلس يسهل عليك كثيرا تعلم السي شارب والجافا. لكنه لا يعطيك اي شيء في لغة من نوع اخر مثل prolog

See More

في التعامل مع navmesh تريد من العدو ان يلاحق اللاعب
بهذا تريد باستمرار تحديث موقع اللاعب في مكون الnav agent
والكثير يخطئ بوضعها في دالة update يقوم بتحديث موقع اللاعب في كل frame ما يعني اكثر من 60 مرة بالثانية الواحدة. وهذا عمليا غير منطقي بالاضافة الى انه غير جيد not efficient يعني شغلك زبالة :| مابتلاحظ مع الالعاب الصغيرة بس تظل سيئة جداً

استخدم تحديث الموقع في دالة مستقلة. قم باستدعاء هذه الدالة من خلال InvokeRepeating...
في دالة Start وتقوم بتكرارها كل بضع اجزاء من الثانية مثلا كل 0.3 ثانية اقل او اكثر.

لن يلاحظ اللاعب ذلك وسيكون شغلك اكثر كفائة

See More

public float speed;

void Reset() {
speed = 25f;
}

...

اعادة تعيين القيم الافتراضية لأي مكون في نافذة inspactor
الخاصة بالكائن، يمكنك ان تضع اعدادات افتراضية للسكربت الخاص بك من خلال دالة Reset
ثم عندما تضغط على علامة (الدائرة المسننة) بجوار السكربت في تلك النافذة وتختار Reset
سيتم ضبط القيم الافتراضية

جرب ذلك

See More

في يونتي يوجد مكون اسمه Light prop group
وهي نقاط تقوم بتوزيعها في المشهد حتى تخبر المحرك ان هذه البقاع فارغة بالتالي لا يقوم بإعادة اجراء العمليات الحسابية للإضاءة والظلال. وفي حال وجود كائن متحرك (لاعب مثلا او عدو) فإنه سيعرف في اي بقعة بالتحديد يتحرك هذا الكائن وبالتالي سيقوم بإعادة حساب تلك البقعة فقط وليس كامل المشهد.
في المحرك ستجد انه يرسم لك خط يوصل كل ن قطة بالاخرى وترى ان المشهد اشبه مايكون بانه مقطع، يمكنك توزيع نقاط كثيرة على كل المشهد لتحوله الى قطع عديدة، عندما ...تضع كائن محدد في بقعة محددة، ستجد ان تلك البقعة تم تحديدها باللون الاصفر بناءا على النقاط التي قمت بتوزيعها.

ملاحظة: ضع هذا المكون على كائن فارغ، يمكنك وضعه على اكثر من مكون ايضا لكن واحد بالنسبة للمشاهد الصغيرة سيكون كافي.
قم بتقطيع البقاع التي يتحرك فيها الكائن او يراها اللاعب، حتى لو كان هناك شخصيات npc لست مضطر لخلق ظلال لها اذا كانت بعيدة ولا يراها اللاعب او كانت خلف جدار ولا يراها اللاعب. المهم هو ما يراه اللاعب فقط

مثلا وجود بقعة لا يذهب اليها اللاعب، او بقعة لا يصلها الضوء ولا تظهر فيها ظلال، لن تضطر لعمل شيء لها

Optimize your game performance

See More
No automatic alt text available.
No automatic alt text available.

كيف تصبح مطور العاب ( - مقدمة - تعلم - تدريب - مقالات - خاتمة )
https://www.kafalkhor.com/games/topic/-Kr1ktRSynJneKM_q_AN

اربع مواضيع كتبتها من باب تجربتي في هذا المجال (بعضها تم نقله حرفيا او تم الاقتباس منه) واعتبرها خطتي في التعلم وتطوير الالعاب فانا ايضا لازلت اتعلم، ولكني ايضا اقرا تجارب الاخرين مما يختصر علي المجهود

...

ملاحظة: اذا واجهت مشكلة بالدخول ادخل الى هنا (ثم ادخل قسم الالعاب)
https://www.kafalkhor.com

See More
اعتقد بانك قرات الكثير من المقالات حول كيف تبدا او كيف تصبح مطور العاب، ولكني سأكتب لك خلاصة ما قمت شخصياً بتجربته وخطتي الشخصية لأصبح مطور العاب، وبالمختصر المفيد ما ستجده هنا مختلف كلياً عن أي مقالة تحمل ذات العنوان.
kafalkhor.com

سالت بالامس سؤوال برمجي (من المستوى المتوسط) وهذا رابط المنشور
https://www.facebook.com/AlMo3allemTechnology/photos/a.704444689691083.1073741828.704440569691495/1123433161125565/?type=3

اجاب عليه الاخ Mo'tasem Zakarneh كما ان الكود مستعمل في احد دروس اليونتي هنا
https://www.unity3d.com/learn ...
(لعبة الكهوف ثنائية البعد)

ولشرح الكود بشكل مفصل اقرء التالي:
يتم تعريف متغير من نوع public static
التعريف public يسمح لنا بان نصل لهذا المتغير من اي سكربت اخر. والتعريف static هو تعريف مميز في عالم البرمجة، حيث يتم استخدامه في الاشياء التي نريد الاحتفاظ بها منذ البداية وحتى اغلاق البرنامج بدون ان تختفي او يتم الغائها. اذا اضفنا هذا التعريف فسيقوم البرنامج بحجز ذاكرة للمتغير باسمه، واذا قمت بتعريف نفس المتغير في مكان اخر في البرنامج سوف لن يتم تعريفه (سيتم تجاهل الامر لانك حجزت مقعد static من قبل له) اما في الطريقة العادية (بدون استعمال static يتم حذف المتغير من الذاكرة بعد الانتهاء من استخدامه او انتهاء عمل الدالة التي قامت بتعريفه)
مثلاً: لو قمت بذلك
void Die(){
string m = "you die";
print(m);
}
سيتم حجز مساحة في الذاكرة من نوع string باسم m ولكن فقط عندما يتم استدعاء الدالة die، سيتم حذف المتغير m من الذاكرة مباشرة بعد ان تنتهي الدالة die من العمل.
اما لو قمت بذلك static string m
سيتم تعريفه، لكن عند انتهاء الدالة سوف لن يتم الغاءه ابداً بل تستطيع استعماله دائما في اي مكان اخر.
void Die(){
static string m;
}
void hello(){
static string m;
}
اذا تم استدعاء الدالة Die ستقوم بانشاء المتغير m، بعد ذلك اذا استدعينا الدالة hello، لن تقوم بانشاء المتغير m، لأنه سبق وتم انشائه بالفعل مسبقاً وهو static بمعنى "ثابت"

استخدم هذه الطريقة اذا اردت ان تحتفظ بكائن محدد وان يكون واحد وبدون تكرار مثل GameManager (كما ستشاهد في دروس اليونتي)
عند استدعاء هذا الكائن (الذي يحمل هذا الكود) لأول مرة سيقوم بتعريف متغير من نوع static bool instanse، كما شرحت لكم منذ قليل، اذا كان هذا الكائن هو اول كائن سيقوم بتعريف اول متغير static bool instanse، وبالطبع ستكتون قيمته null وسيتحقق الشرط وسيصبح هذا المتغير مؤشر لهذا السكربت + هذا الكائن. (نستطيع استخدام هذا المتغير للوصول لباقي الدوال والمتغيرات في السكربت)

اما اذا كان هذا الكائن مكرر وهو ثاني كائن نقوم بوضعه في اللعبة، فلن يستطيع انشاء static bool instanse وايضاً سوف لن يتحقق الشرط لان هذا المتغير موجود من قبل في مكان اخر في البرنامج ولا يمكن اعادة تعريفه كstatic

اذا استخدمتها في كائن من نوع GameManager وقمت باضافة اثنين من الكائنات GameManager
الكائن الثاني سيتم تدميره

لاحقاً تستطيع كتابة هذا الكود
GameManager.instanse.FunctionName();

See More
Image may contain: text
المُعلِّم للتقنية وصناعة الألعاب

ما الذي يمكنك ان تفهمه من الكود التالي .. اشرح

ما الذي يمكنك ان تفهمه من الكود التالي .. اشرح

Image may contain: text

اذا كنت تريد معرفة جسمين وهل هما قريبان من بعض ام لا - حساب مسافة - فيمكنك استخدام الدالة Vector3.sqrMagnitude

هذه الدالة ستعطيك المسافة التربيعية للكائن، ومن خلالها يمكنك ان تعرف هل هو قريب من نقطة معينة ام لا!
مثال:
Vector3 x = new Vector3(2,2,2);...
float sqlLength = x.sqrMagnitude();

الجواب سيكون
x*x + y*y + z*z
=
(2*2) + (2*2) + (2*2) = 4 + 4 + 4 = 12

اذا كيف تحسب مقدار المسافة بينه وبين الكائن الحالي؟ لنفترض اننا نريد ان نتحقق اذا كان العدو قريب من اللاعب ب5 امتار او اقل فهذا هو المثال في الرابط التالي:
اولا اخذ فارق المسافة بين الكائنين من خلال طرح الposition
ثم قام بتحويلها الى sqr magnitude
ثم تحقق من الناتج هل هو 5 او اقل او لا ؟

https://docs.unity3d.com/ScriptRe…/Vector3-sqrMagnitude.html

See More
Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.
docs.unity3d.com

متغير من نوع Delegates
يمكنك هذا المتغير من تخزين عدة دوال functions فيه، وتستطيع أن تقوم باستدعاء الدالة او الدوال المخزنة فيه في سطر واحد

سيكون مفيد اذا كانت هناك عدة دوال يجب تنفيذها في حال حدوث ظرف او ظروف معينة داخل لعبتك، بدل ان تقوم بكتابة تلك الدوال واحدة واحدة. (هذا مثال بسيط لا اكثر طبعاً)
لتفاصيل اكثر:...
https://unity3d.com/l…/tutorials/topics/scripting/delegates…

See More
Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.
unity3d.com

كيف بتقدر تضيف دوال في كلاس مابتقدر تتحكم في السورس كود الخاص بها.
مثلاً انت لاتستطيع تغيير الكودسورس الخاص بالTransform
لكنك تريد اضافة دالة بحيث تستطيع استدعائها من خلال transform

الشرح على الرابط التالي (ليس بالضرورة تفهم انكليزي لان الكلام كله لخصته في المنشور)

... See More
Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.
unity3d.com

ايجاد قيمة نسبية بين قيمتين او ماتعرف بـ:
Linear Interpolation
رابط الدرس:
https://unity3d.com/…/topics/scripting/linear-interpolation…

...

شرح الدرس - الخلاصة -
تقوم باعطاء قيمتين (رقمين على سبيل المثال) وتريد ايجاد الرقم الذي يقع بينهما بنسبة معينة.
مثلاً: الرقمين 3 و 5 وتريد ايجاد القيمة التي بينهما بنسبة 50%
mathf.Lerp(3,5,0.5f);
النتيجة ستكون الرقم 4.
ويمكنك تطبيقها على الـvector مثل ايجاد موقع بين موقعين بنسبة معينة
Vector3 from = new Vector3 (1f, 2f, 3f);
Vector3 to = new Vector3 (5f, 6f, 7f);

// Here result = (4, 5, 6)
Vector3 result = Vector3.Lerp (from, to, 0.75f);

See More
Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.
unity3d.com

كيف تصبح مطور العاب..
جمعت كتاباتي وما قرأته من مقالات في 5 مواضيع تحت عنوان (كيف تصبح مطور العاب) تستطيعون قرائتها هنا
https://www.kafalkhor.com/games

قمت بنشر فقط ثلاث اجزاء...
0- المقدمة
1- دروس
2- تمارين

وبقية جزئين اخرين انشرهم لاحقاً على موقعي الشخصي
- mahdi -

See More
موقع كفل خور، العاب ومانجا وخدمات الترجمة والتطوير والتعليم
kafalkhor.com

تريد تطوير لعبة RPG ؟ هذه دورة جديدة من قناة Sebastian بالاشتراك مع قناة Brackeys وتشمل دورتهم المجانية كل من دروس التصميم ودروس البرمجة وكذلك الاجراء العشوائي لخريطة اللعب

فيديو الاعلان عن الدورة:
https://www.youtube.com/watch?v=NGn_gSfYwVw&t=14s

...

الدرس الاول - تصميم الشخصية - قد تم نشره ايضاً

بمعنى اخر. دورة من الالف الى الياء من التصميم والى البرمجة والانتاج

See More
Hello, for this series on creating the basics mechanics of a role-playing game, I've teamed up with Asbjørn Thirslund -- aka Brackeys. You can find the playl...
youtube.com

يونتي - معلومات عامة مهمة جداً تؤثر على اداء اللعبة the performance -
المعلومة الاولى: Updates
دوال Update متعددة لكل منها استعمالها
1- Update:
يتم استدعاءها بعد رسم كل اطار rendering...
2- FixedUpdate:
يتم استدعاءها بعد الحسابات الفيزيائية ولهذا هي تصلح لاي شيء له علاقة بالوقت والفيزياء مثل rigidbody
3- LateUpdate:
هي مثل الاولى بشكل طبيعي جداً لكن يتم استدعاءها بعد ان يتم استدعاء Update. ولذلك هي مناسبة في حال رغبت باجراء اوامر تكون بعد اوامر معينة. مثل ان تتبع الكاميرا اللاعب بعد ان يتحرك. ستكون حركة اللاعب في الاولى او الثانية ولكن ستكون حركة الكاميرا هنا

------------------------
المعلومة الثانية: Physics
لاتتداخل القيم الفيزيائية - المتغيرات - بين كائنين معاً لكن عند التصادم يقوم المحرك باجراء معادلات التصادم وتطبيقها على الكائن
هناك نوعين من التصادم - collider - وهما
1- Static
وتعني "ثابت" وهو عبارة عن كائن يحمل مكون متصادم collider مثل box collider ولكنه لايحمل المكون الفيزيائي rigidbody.
وهي تعني ان الكائن ثابت لايتحرك من امثلة الجدار والابواب وغيره.

2- Dynamic
وتعني "متغير" وهي عبارة عن كائن يحمل مكون التصادم مع مكون الفيزياء rigidbody. وهي مفيدة للكائنات التي تتحرك او تدور مثل اللاعب او اي شيء يتحرك ويدور حول نفسه.

هناك مشكلة في الاداء في المتصادم الثابت
طبيعة اليونتي يقوم بحساب قيم المتصادمات الثابتة في كل اطار - frame - لانها ثابتة ولايجب ان تتحرك فهو يقوم بحفظ موقعها وقيمها في ذاكرة سريعة الوصول تسمى بـcatch (احدى مكونات الحاسوب)
لذا اذا قمت باستخدام المتصادم الثابت وقمت بتحريك الكائن... فان اليونتي سيضطر الى اعادة حساب هذا الكائن مرة اخرى وحفظ قيمه من جديد.
تحريك الكائن باستمرار مثل اللاعب أو تدوير شيء باستمرار مثل تدوير صندوق في المشهد وهو يستخدم المتصادم الثابت سيؤدي الى استهلاك موارد الجهاز. قد لاتحدث مشكلة بالنسبة لالعاب بسيطة وعدد قليل من الكائنات في اللعبة

لكنها ستكون مشكلة بالنسبة للاجهزة الضعيفة أو/و استخدام الكثير من الكائنات في اللعبة والالعاب الكبيرة.

لحل هذه المشكلة ستستخدم المتصادم المتغير.

بعض المشاكل ايضا التي قد تواجهها في المتصادم المتغير.
هو ان المتصادم المتغير يتأثر بالجاذبية. فاذا كنت تقوم بتدوير صندوق في المشهد (كنوع من الالفات للاعب ليأتي اليه) فانك ستقوم بتفعيل خيار isTrigger له حتى يختفي بمجرد لمسه كنوع من التقاط الاداة او ما اشبه.
وستقع في مشكلة اذا وضعت له rigidbody وهو انه سيقع من على الارض الى الاسفل .....
ولحل هذه المشكلة يوجد متغير في مكون rigidbody مخصص لتفعيل الجاذبية اسمه use gravity قم بازالة علامة الصح منه

المشكلة الثانية هي انك تقوم بتدوير الكائن باستخدام rotate وعند استخدام rigidbody فانت ستقوم بتفعيل دوال التحريك الخاصة بrigidbody
ويوجد ايضا متغير خاص اسمه is Kinematic قم بتفعيله
هكذا ستقوم بتعطيل الrigidbody functions لكن لازال بامكانك تحريك الكائن بالطريقة العادية

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

المصدر: الدرس الاول من دروس اليونتي - الجزء الثالث الفيديو الثاني
https://unity3d.com/l…/tutorials/projects/roll-ball-tutorial

See More
No automatic alt text available.

صدرت النسخة Unity 2017.1 رسمياً في موقع اليونتي
https://unity3d.com/get-unity

Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.
store.unity.com