المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [درس] كيفية عمل تأثيرات مناخية فى الطور ثلاثى الابعاد



d.a.m.h
03-09-2006, 01:39 AM
بسم الله الرحمن الرحيم

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

اول شىء نفعله هو ان نرسم شكل المطرة او كتلة الثلج التى تنهمر من السماء (ارسم المطرة كخط ابيض مائل والثلج ككرة بيضاء صغيرة) وسم هذه الرسمة ب spr_rain
الان نبدأ بوضع الاكواد التى تجعل الجليد يسقط.....

اول شىء نفعله هو ان نضع لقطعة الثلج او للمطرة متغير ونسميه z وليكن
z=200
وهذا المتغير سنستخدمه فى اسقاط قطرة المطرة او قطعة الثلج....كيف؟؟؟ سأشرح حالا
الان حان الوقت لكى نرسم المطرة فى الطور ثلاثى الابعاد......وطبعا من لديه خبرة فى مجال الجيم ميكر ثلاثى الابعاد يعرف ان الدالة المستخدمة هى

d3d_draw_wall()

لنبدأ الان بوضع القيم الخاصة بهذه الدالة والمسماه بال arguments

d3d_draw_wall(x , y , z , x+2 , y+2 , z-15 , sprite_get_texture(spr_rain , 0) , 1 , 1)

الان كيف نجعل قطرة المطر تسقط؟؟ بأن نجعل الارتفاع يقل فتنزل قطرة المطر متجهه نحو الارض
وهذا الارتفاع هو المتغير الذى وضعته (z)
ويمكن عمل ذلك بأن نكتب فى الحدث step هذا الكود
z-=5
او اذا اردت ان تجعل الامطار تنهمر بسرعة متفاوتة فاكتب


z-=choose(5,8)

ومعناها ان قيمة z ستنقص بمقدار 5 او بمقدار 8
والان هنا يأتى الخطأ الذى يقع فيه الكثير منا...ستظل المطرة الواحدة تسقط الى مالا نهاية.. فتخيل اننا سنصنع العشرات من هذا الاوبجكت فبالتالى سيزيد عددها فى الغرفة وتجعل اللعبة بطيئة جدا
لكى نمنع حدوث هذا يجب علينا ان نجعل لقيمة z حدا معينا اذا تجاوزته فان الاوبجكت يختفى من الغرفة...او بمعنى ادق يحدث له instance_destroy()
وهنا فى حدث step نكتب هذا الكود

if z<0 then instance_destroy()
وقيمة صفر هذه تستطيع انت تغييرها الى ما تريد لكنى وضعتها فى مثالى الموجود بالمرفقات لأن ارتفاع الارضية (floor) يساوى صفر

الان...هل نضع هذا الاوبجكت فى الغرفة؟؟؟...الجواب لا :wow: ...فليس منها فائدة فهى ستسقط قطرة واحدة فقط
اذا كيف سنجعل الامطار تنهمر؟؟؟ علينا الان ان نصنع اوبجكت خاص يجعل الامطار تنهمر وسنسمى هذا الاوبجكت obj_rain_control
ونضع فى الحدث step الخاص بهذا الاوبجيكت الجديد


instance_create(random(room_width) , random(room_height) , obj_rain


وطبعا وضعت random (room_width) و random(room_height) لكى يكون المطر موزع فى اماكن مختلفة فلو تجمعت الامطار فى مكان واحد لبدا هذا سخيفا
لكن مازال هناك مشكلة صغيرة...هى ان المطر قليل هنا ولن يكفى لعمل شتاء محترم فى لعبة محترمة
من انتاج عضو محترم ........لذا سنستخدم تعبير اغلبنا لا يستخدمه الا وهو repeat
وهذا التعبير عندما تكتبه وتكتب بجواره رقم ثم تكتب بعدهما حدث فان هذا يعنى ان الحدث الذى كتبته سيتكرر بعدد المرات التى كتبتها
فلنستخدم هذا التعبير للحصول على امطار اكثر



repeat (8)
instance_create(random (room_width) , random (room_height) , obj_rain)

ومعناها ان الاوبجكت المذكور سيتم خلقه ثمان مرات لكل step
طبعا تستطيع بدلا من وضع هذا التعبير كتابة الكود الخاص instance_create ثمانى مرات
الان شغل المثال وانظر النتيجة....مبهرة اليس كذلك؟؟؟ :biggthump
ارجو ان يكون هذا الدرس مفيد....والمثال موجود بالمرفقات يحتوى على طقس مثالى وصوت رعد :ponder: .....فى انتظار ردودكم...انتهى الدرس :35: :35:
والسلام عليكم ورحمة الله وبركاته

PrinceOfSorrow
03-09-2006, 04:34 AM
انا أطالع المثال :( أتشفف
مشتاقين حق حلبة تمطر علينا في قطر ^^
------------
أشكرك على درس أخوي وطريقة وايد عجبتني ^^ وخاصة عملت طريقة رسم سبرايت المطر ^^
يعني ممكن نحط (ورورد . ثلج . سهام . نيران . ألخ) بهذه طريقة ^^

باز يطير
03-09-2006, 04:39 AM
وعليكم السلام ورحمة الله وبركاته

درس جداً مميز وكنا منتظرينه من زمان

ودروس المناخ تعجبني شكراً ليك اخوي الله يعطيك العافية

والى الأمام الدرس افادني كثير
شكراً

d.a.m.h
03-09-2006, 11:23 AM
انا أطالع المثال :( أتشفف
مشتاقين حق حلبة تمطر علينا في قطر ^^
------------
أشكرك على درس أخوي وطريقة وايد عجبتني ^^ وخاصة عملت طريقة رسم سبرايت المطر ^^
يعني ممكن نحط (ورورد . ثلج . سهام . نيران . ألخ) بهذه طريقة ^^

لا تخف......رقصة المطر تنفع احيانا :D ........ياريت لو كانت تنفع
ان شاء الله تكون استفدت


وعليكم السلام ورحمة الله وبركاته

درس جداً مميز وكنا منتظرينه من زمان

ودروس المناخ تعجبني شكراً ليك اخوي الله يعطيك العافية

والى الأمام الدرس افادني كثير
شكراً

العفو واتمنى ان ترينا اعمالك فى مجال الثرى دى.....شد حيلك :biggthump

باتمان2004
03-09-2006, 11:43 AM
الدرس متميز جداً أخي العزيز..وبصراحة كنت أتمنى أن أجد مثله في المنتدى..
وفقك الله وهداك إلى سواء السبيل..
شكراً...

MALTOOSH
03-09-2006, 11:43 AM
جزاك الله خير على الدرس المفيد..

والمثال الأصوات فيه رائعة..

أتمنى منك الاستمرار في الدروس ...

وشكرا لك..

||صقر||
03-09-2006, 12:52 PM
شكراً على الدرس.... بالتوفيق فى دروسك الجايه >> منتظرها"

سامي.خ
03-09-2006, 01:14 PM
درس جميل وممتاز
كنت بسويه درس بالمنتدى ولكنك سبقتني عليه

d.a.m.h
03-09-2006, 03:06 PM
باتمان: شكرا على الرد....وبانتظار جديدك :)

ملطوش: صوت البرق مزعج قليلا...اليس كذلك؟؟ :biggthump

احمد صقر: ان شاء الله نشوفها فى بركان الغضب النسخة الكاملة ...بالتوفيق ;)

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

kakarot
03-09-2006, 06:31 PM
جزاك الله خيراً على الدرس المفيد :) عندما تعمل لعبة ثلاثية الأبعاد;)
وشكراً جزيلً لك :D

من التراب
03-09-2006, 09:43 PM
شكرًا على الدرس مميز ويجعل الألعاب مميزه ;)

مع قل خبرتيه بالــ 3 دي ع الميكر لكني فهمت الدرس 100%

++ أول مره أعلم بوجود repeat كنت أستخدم for لكنها أصعب وتسبب لي مشاكل إذا كررتها -_-

شكرًا ونتظر المزيد من التميز

أنا عندي أفكار حلوه في راسي لكني مازلت في مرحلت instance_destroy .... ><"

:D

بالتوفيق

سمسم المبرمج
04-09-2006, 01:54 AM
شكرا على الدرس الجميل المفيد ولا تحرمنا من دروسك المميزة

d.a.m.h
04-09-2006, 11:31 AM
Kakarot: العفو..... طلبك مجاب ان شاء الله.....طبعا فاهمنى ;)

من التراب: وينك؟؟؟ياريت لو هذا الدرس يشجعك قليلا لتعود لحالة instance_create() فى الحدث step (يعنى تظل تنتج باستمرار) :D

سمسم المبرمج: العفو اخى....وان شاء الله اى فكرة جيدة سوف اضعها لكم

من التراب
04-09-2006, 10:21 PM
من التراب: وينك؟؟؟ياريت لو هذا الدرس يشجعك قليلا لتعود لحالة instance_create() فى الحدث step (يعنى تظل تنتج باستمرار) :D


أنا شبه موجود :dead:

instance_create في الحدث step معناها تتجمد اللعبه وماشي فايده ><"

الحاله القادمه قريب ReBuilding وإن شاء الله كل شي بيكون تماااااام بس دعواتكم

درسك شجعني كثير ونزلت المثال كان روعه وصراحه حبيت ألعاب الـ 3 دي عالميكر

بالتوفيق ..