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:
والسلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته....انقطعت عنكم فترة لذا تعويضا عن تأخرى اكتب هذا الدرس وهو كيفية عمل تأثيرات مناخية فى الطور الثلاثى الابعاد بالجيم ميكر
تخيل انك تصمم فى اللعبة ثم تريد ان تجعل السماء تمطر (سواء ان كان شتاء عادى او ثلج) فكيف تفعل ذلك؟؟؟ ركز معى
اول شىء نفعله هو ان نرسم شكل المطرة او كتلة الثلج التى تنهمر من السماء (ارسم المطرة كخط ابيض مائل والثلج ككرة بيضاء صغيرة) وسم هذه الرسمة ب 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:
والسلام عليكم ورحمة الله وبركاته