برای دیدن آموزش ادامه مطلب را ببینید .
فیزیک جاذبه
F = m * g g برابر است با 10 متر بر مجذور ثانیه . یا شتاب اجسام در سقوط. m برابر است با جرم هر جسم . F برابر است با نیرویی که زمین به جسم وارد می کند یا همان وزن. در سقوط آزاد : شتاب = g speed = g * t + v0 سرعت = g * زمان + سرعت اولیه معادله ی بالا معادله سرعت می باشد که با آن می توان در هر لحظه از سقوط ، سرعت را به دست آورد . t زمان افتادن شی از لحظه افتادن است . |
تمام مطالبی که به شما آموزش می دهم را قبلا در فیزیک 1 سال اول دبیرستان دیده اید ، می دانید حرکت سقوط آزاد یک حرکت شتاب دار است . وقتی توپ رها می شود ، سرعت آن هر لحظه زیادتر می شود ، و وقتی به نزدیکی زمین می رسد بیشترین سرعت را دارد و همینطور وقتی توپ به زمین برخورد کرد و به بالا آمد چون شتاب منفی می شود ، سرعت توپ لحظه به لحظه کم می شود تا زمانی که به نقطه اوج خود برسد و دوباره به سمت زمین برگردد.
حال بیایید کد زیر را بررسی کنیم ، . برای باز کردن این کد ، باید ابتدا برنامه فلش را باز کرده و گزینه های زیر را انتخاب کنید :
file>new را انتخاب کرده و در پنجره ای
که باز می شود گزینه ی actionscript 2 .0 را انتخاب کنید . حالا گزینه
های insert>new symblol را انتخاب کرده و از پنجره ای که باز می شود در
منوی کشویی movieclip را انتخاب کرده و ok کنید .
حالا یک شکل دایره ای یک هر چیزی را که دوست دارید بکشید و سپس به صفحه اصلی بروید .
شاید از خودتان بپرسید که شکلی که کشیدید کجا رفت ؟ باید به شما بگویم که سکل شما در پانل library ذخیره شده است ، پانل library در گوشه ی سمت راست و بالا قرار دارد ، شما می توانید این پانل را به این صورت نیز بیاورید : window > library .
حالا در پانل library شکلی را که کشیدید مشاهده می کنید ، آن را به روی صفحه درگ کنید .
و روی شکل خود کلیک کرده و در پانل actions کلیک کنید ، و کد هدی زیر را کپی کنید ، سپس برنامه را اجرا کنید (ctrl+enter) .
آنچه ما درست کردیم یک مثال جالب بود ، . سرعت توپ دائما توسط جاذبه زیاد می شود ، طوری که هرچه از زمان افتادن می گذرد سرعت توپ هم بیشتر می شود .
حال به توضیح کد می پردازیم :
در خط اول ما یک شنونده ی رویداد ایجاد کردیم . این شنونده ی رویداد را بر روی خاصیت load تنظیم کردیم ، این خاصیت باعث می شود که کد هایی را که در شنونده ی روداد قرار داده ایم ،در لحظه اجرا اعمال شوند و فقط یک بار .
در خط دوم میزان جاذبه را تعیین کردیم ، هرچه عدد gravity بیشتر باشد ، نشان می دهد که جاذبه بیشتر است ، در اینجا ما میزان جاذبه را برابر 2 قرار دادیم .
در خط سوم سرعت اولیه را مشخص کرده ایم ، speedy سرعت اولیه را نشان می دهد که ما آن را برابر با صفر قرار دادیم .
در خط ششم ما این کد را داریم : speedy=speedy + gravity این کد به برنامه میگوید که در هر لحظه به سرعت اولیه ، gravity را اضاف کن ، این یعنی که در هر لحظه سرعت را افزایش بده .
در خط هفتم این کد را داریم : this._y += speedx /5 این کد به برنامه می گوید که y توپ را هر لحظه به اندازه ی speedx ، تقسیم بر 5 اضاف کن . این تقسیم بر پنج اختیاری است ، شما می توانید هر عدد دیگری را جای آن بگذارید ، هرچه بر عددی بزرگتر تقسیم کنید توپ شما دیرتر پایین می آید .
حالا ما می خواهیم توپی که ساختیم به زمین برخورد کند و برگردد، برای اینکه بتوانیم چنین کاری را انجام دهید ما باید y کف زمین را مشخص کنیم ، بیایید خاصیت y کف زمین (floor) را برابر 350 قرار دهیم این یعنی وقتی y توپ به 350 رسید ، توپ به زمین برخورد کرده است و باید برگردد .
وقتب توپ به زمین برخورد می کند قاعدتا باید مقداری از انرزی خود را از دست بدهد ، پس باید y ها قرینه شوند ، یعنی y شکل که تا کنون افزایش می یافت اکنون باید کاهش یابد تا شکل به سمت بالا برود .
و ما می خواهیم که پس از هر برخورد ، انرژی توپ کاسته شود ، پس باید speedy در یک عدد(bounce) کمتر از یک ضرب شود تا در زمان اوج ، y شکل کمتر از y قبلی باشد .
مانند کد قبل :
در خط اول یک شنوده رویداد ایجاد کردیم و gravity را برابر 2 قرار دادیم و درون این شنونده رویداد:، floor را برابر 350 ،و bounce را برابر 0.92 قرار دادیم ، لازم به ذکر است که هرچه مقدار bounce به عدد یک نزدیکتر باشد ، اتلاف انرژی کمتر صورت می گیرد و تعداد برخوردهای توپ به زمین بیشتر می شود .
در خط پنجم سرعت اولیه را برابر صفر قرار دادیم .
در خط ششم یک شنونده رویداد ایجاد کردیم (enterframe)که در درون آن :
در خط هفتم ، تساوی را طوری قرار دادیم که در هر لحظه به سرعت شی اضافه کند .
در خط هشتم به برنامه گفتیم که y شکل را در هر لحظه اضافه کند .
در خط نهم یک دستور جدید می بینیم که به برنامه می گوید که وقتی y شکل به 350 رسید ، آنگاه سرعت را معکوس کند و در عدد کاهنده انرژی ضرب کند .
ادمه این درس که در زیر آمده است نیاز به پیشنیازهای بیشتری دارد که بعدا آنها را بازگو خواهم کرد و ادامه را نیز ترجمه خواهم نمود .
Now imagine that we want to drag the ball and then let it
go.
The first thing we have to do is check if the ball is being
dragged. In order to do so, we'll put a button inside the
ball movie clip, with the code :
If we're not pressing, we will do with the old code, but if we're pressing, we have to start dragging the movie clip and calculate its speed. Here's the complete code of the movie clip :
If you don't get it, just check the elasticity tutorial, I
tried to explain the principle better there.
Last but not least, I told you at the beginning about the
physics behind it. Well, it is possible to program the ball
so that it moves according to real equations, and not simply
ransom figures.
We had speed = g * t + starting_speed. All we have to
do is get the time when the ball is thrown. Be careful
though : we have to reset the timer and the starting speed
every time the ball bounces or is released. Here's the code
:
The motion isn't really different from the previous one, but
it comes directly from the physics equations of motion.
There! I hope you understand gravity in Flash a little bit
better now.
Click
here for all of the
source files for this tutorial regarding gravity.
This
tutorial is written by Ilyas Usal. Ilyas is also known as
ilyaslamasse
on the
kirupa.com forums! If you have any questions, please post
them on the forums by
clicking
here.