بررسی فیزیک در یه بازی فلش (سطح متوسط)

mshgames

Well-Known Member
به نام خدا


سلام



بررسی فیزیک سرعت در فلش و در بازیها (سطح مبتدی) ----- قسمت اول



خوب برایه شروع ابتدا نرم افزار فلش رو بازی کرده و یه سند خالی ایجاد کرده
حال یه شکل توسط ابزار Tool سمت چپ پنجره فلش رسم کنید حالا هر شکلی (دایره مستطیل بیضی و.......)حال توسط ماوس کل شکل را انتخاب و دکمه Ctrl+F8 کیبرد را زده تا پنجرهای همانند شکل باز شود
در قسمت دکمه های رادیویی گزینه Movie clip را برگزینید.
در قسمت Name هر اسمی دلتون میخواد بزارید مثلا "SpaceShip"

dz6zxd.jpg





حال رویه Ok کلیک کرده حال مووی کلیپ خود را انتخاب و در نوار پایین قسمت Properties و در قسمت یا کادر Instance Name بنویسید mc خوب این سفینه مایه حال قسمت برنامه نویسیش مونده


334p8v8.jpg



حال فریمه اول را انتخاب کرده و کد زیر را درش کپی کنید

PHP:
var speedx=0;
var speedxx=0;
var speedy=0;
var speedyy=0;
onEnterFrame=function(){
	mc._x+=speedx;
	mc._x-=speedxx;
	mc._y-=speedy;
	mc._y+=speedyy;
	if(Key.isDown(Key.RIGHT)){
		speedx+=0.20;
}
else
speedx-=0.06;
if(speedx<=0){
	speedx=0;
}
if(Key.isDown(Key.LEFT)){
	speedxx+=0.20;
}else
speedxx-=0.06;
if(speedxx<=0){
	speedxx=0;
	mc._rotation=0;
}
if(Key.isDown(Key.UP)){
	speedy+=0.20;
}else
speedy-=0.06;
if(speedy<=0){
	speedy=0;
}
if(Key.isDown(Key.DOWN)){
	speedyy+=0.20;
}else
speedyy-=0.06;
if(speedyy<=0){
	speedyy=0;
}
if(mc.hitTest(UW)){
	speedyy+=4;
	speedy=0;
}
if(mc.hitTest(DW)){
	speedy+=4;
	speedyy=0;
}
if(mc.hitTest(LW)){
	speedx+=4;
	speedxx=0;
}
if(mc.hitTest(RW)){
	speedxx+=4;
	speedx=0;
}
};

توضیح کد: ابتدا ما مقدار اون جعبه متن یا متغیر را برابر صفر قرار داده و 4 متغیر محلی با نام های speedx , speedxx , speedy , speedy ایجاد کرده که مقدار اولیشان صفر میباشد.




حال توسط اونت enterFrame را برابر یه تابع قرار داده که این تابع را هر زمان یا همون هر فریمی که وارد میشه enterFrame انجام بده:


حالا تابع مورد نظر چیکار میکنه؟؟؟؟


اون شکله ما که اسمش mc در جهت x و y (بالا پایین چپ راست بر حسب مقادیر 4 متغییر اول حرکت میکنه که در حالت عادی اون 4 متغییر 0 در نتیجه مووی کلیپ ما ثابته)
هنگامی که کلید RIGHT و یا همون راست پیکان نما فشرده شد(شی Key) متغییر speedx رو در هر لحظه به اندازه +0.20 افزایش بده و هنگامی که کلید زده نشده (else) متغییر چیکار کن به مقدار -0.06 کمش کن و زمانی که متغییر speedx کوچکتر یا برابر 0 شد اونوقت مقدارشو برابر 0 قرار بده تا متوقف بشه

برایه بقیه جهتا همینه بالا چپ پایین



حال به تابع hitTest میرسیم


قبل از اون

ابتدا 4 تا خط دور استیج یا همون صفحه کاری مون رسم کنید و هر کدومشونو تبدیل به یه نمونه مووی کلیپ کنید(انتخابشان کرده و دکمه Ctrl+F8 را زده) بدین شکل:





spjddk.jpg






حال بالایی را انتخاب و (مووی کلیپ یا همون خط بالا را که تبدیل به مووی کردید را انتخاب و در نوار پایین قسمت Properties و در قسمت Instance Name نامشو بدید UW یعنی دیوار بالا و برایه پایینی نامشو بدید DW و برای سمت چپی نامش برابر با LWو برایه آخری یا همون راست RW


حال بقیه کد

میگیم زمانی که این مووی ما (سفینه) برخورد کنه به یکی از این دیوارا مقدار اون متغیر 0 و متغیر معکوس پر بشه


مثال مثلا اگه به دیوار بالا برخورد کرد چون کاربر همچنان دکمه بالا کیبرد رو فشرده مقدار متغییر speedy برابر 0 بشه یعنی دیگه بالا نتونه بره و مقدار متغییر جهت پایین که speedy برابر با مثلا 4 بشه تا بیاد شکلمون پایین حالت برخورد ساده داشته باشه برایه بقیه هم همینطور



حال دکمه Ctrl+ENTER را زده و نتیجه را مشاهده نمایید



اینم فایله Fla



موفق باشید محمد
 

پیوست ها

  • Physic.rar
    7.9 کیلوبایت · بازدیدها: 14

mshgames

Well-Known Member
دوستان نظری چیزی نبود


راستی امیر جان اینو اگه امکان داره به قسمت مباحث آموزشی منتقل کن من اشتباه کردم اینجا تاپیک زدم

ممنون

موفق باشی
 

جدیدترین ارسال ها

بالا