ریاضیات در بازی ها (فیزیک و متغیرها) – جلسه سوم

در بخش آخر ، در جایی که به حرکت یک شخصیت با استفاده از “hero.x = hero.x + 1” اشاره کردم ، hero.x متغیری است که برای نشان دادن موقعیت شخصیت ما استفاده می شود.
X می تواند در حرکات مختلف نشانگر شخصیت در مکان های مختلفی از صفحه باشد ،این حرکت ها ابتدایی و پایه هستند هرچند بعد از مدتی ممکن است کنترل برخی از آنها کسل کننده باشند.
ما می توانیم با استفاده از متغیرهای بیشتر در معادلات خود ، برخی از فیزیک ها و حالت های جدید را به حرکات بازی اضافه کنیم.

در تصویر بالا ، صفحه نمایش به 2 جهان بالای آب و جهان زیر آب تقسیم شده است.
بالاتر از آب ، ما می خواهیم شخصیت ما سریعتر از زیر آب حرکت کند ، اما همچنین می خواهیم او را مستعد جاذبه کنیم که او را به سمت پایین می کشد ،مگر اینکه کلید بالا برای کاهش موقعیت Y دوباره استفاده شود.
در مقابل در زیر آب می خواهیم شخصیت ما کندتر حرکت کند ، اما همچنین می خواهیم او را مستعد شناور بودن کنیم که او را بالا می کشد مگر اینکه از کلید پایین برای افزایش موقعیت Y استفاده شود.
توجه داشته باشید که همانطور که قبلا گفته شد افزایش Y به معنی افزودن شده به فاصله از بالای صفحه می باشد و Y=0 بالاترین نقطه در بالای صفحه را نشان می دهد.
موقعیت Y شخصیت را می توان بررسی کرد که آیا او بالاتر از سطح آب است یا پایین تر از آن،
اگر کاراکتر بالاتر یا زیر آب باشد ، می توان متغیرهای اضافی را ایجاد و تغییر داد.
- گرانش (gravity)= 1.05 بالاتر از آب و 0.95 زیر آب
- اصطکاک (friction)= 1 بالاتر از آب و 0.5 زیر آب
معادله فشار دادن کلیدهای راست و پایین می تواند به ترتیب زیر باشد:
- hero.x = hero.x + 1 + friction
- hero.y = hero.y + (1 * gravity)
ابتدا کلید راست را بگیرید. اگر موقعیت فعلی شخصیت ما 50 باشد و او بالاتر از آب باشد ، با فشار دادن کلید سمت راست به صورت زیر تغییر مکان میدهد:
- hero.x = 50 + 1 + 1: 52
- hero.x = 52 + 1 + 1: 54
- hero.x = 54 + 1 + 1: 56
با شروع دوباره از موقعیت 50 ، اگر شخصیت ما زیر آب باشد،با 3 بار فشار دادن کلید سمت راست، به صورت زیر تغییر مکان می دهد:
- hero.x = 50 + 1 + 0.5: 51.5
- hero.x = 51.5 + 1 + 0.5: 53
- hero.x = 53 + 1 + 0.5: 54.5
همانطور که می بینید شخصیت ما در زیر آب کندتر حرکت می کند. بعد از 3 بار فشار دادن کلید او از موقعیت X =50 به 56 در بالای آب و از 50 به 54.5 در زیر آب به سمت جلو حرکت کرد.
حال ببینیم که با فشار دادن کلید پایین چه اتفاقی می افتد.
ابتدا بالای آب ، ما از موقعیت 30 شروع می کنیم و 3 بار کلید پایین را فشار می دهیم که نتیجه به شکل زیر است:
- hero.y = 30 + (1 * 1.05) : 31.05
- hero.y = 31.05 + (1 * 1.05): 32.1
- hero.y = 32.1 + (1 * 1.05): 33.15
بعد ، اگر موقعیت Y شروع ما 70 باشد و شخصیت زیر آب باشد ، نتیجه 3 بار فشار دادن کلید پایین به این شکل است:
- hero.y = 70 + (1 * 0.95): 70.95
- hero.y = 70.5 + (1 * 0.95): 71.9
- hero.y = 71.9 + (1 * 0.95): 72.85
در بالای آب ، شخصیت ما سریعتر رو به پایین جرکت می کند، زیرا جاذبه زمین به سقوط آن کمک می کند ، اما در زیر آب کمتر رو به پایین حرکت می کند زیرا خاصیت شناوری سرعت حرکت او را کند می کند.
اگر کاراکتر زیر آب باشد ، یک حلقه می تواند تا زمان قرار گرفتن شخصیت در سطح آب تکرار شود.(برای مثال شی ای را در نظر بگیرید که در زیر آب قرار دارد و به خودی خود رو به بالا حرکت می کند)
این حلقه ممکن است“hero.y = hero.y * gravity” باشد. بدون فشار دادن هیچ کلید ، موقعیت Y شخصیت ما به تدریج کاهش می یابد که به نظر می رسد به آرامی به سمت بالا شناور است.
به همین ترتیب ، اگر شخصیت بالای آب بود ، ممکن است کد مشابهی داشته باشید ، اما با این تفاوت که به تدریج موقعیت Y را که به نظر می رسد شخصیت در حال سقوط است ، افزایش می دهد.
دیدگاهتان را بنویسید