انجمن تخصصی بازی سازی پرومیکرز
جابجا کردن آبجکت در فضای 2 بعدی در زاویه مورد نظر - نسخه‌ی قابل چاپ

+- انجمن تخصصی بازی سازی پرومیکرز (http://promakers.ir)
+-- انجمن: نرم افزارها و موتورهای ساخت بازی (http://promakers.ir/Forum-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7-%D9%88-%D9%85%D9%88%D8%AA%D9%88%D8%B1%D9%87%D8%A7%DB%8C-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A8%D8%A7%D8%B2%DB%8C)
+--- انجمن: Unity 3D (http://promakers.ir/Forum-Unity-3D)
+---- انجمن: پرسش و پاسخ Unity3D (http://promakers.ir/Forum-%D9%BE%D8%B1%D8%B3%D8%B4-%D9%88-%D9%BE%D8%A7%D8%B3%D8%AE-Unity3D)
+---- موضوع: جابجا کردن آبجکت در فضای 2 بعدی در زاویه مورد نظر (/Thread-%D8%AC%D8%A7%D8%A8%D8%AC%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA-%D8%AF%D8%B1-%D9%81%D8%B6%D8%A7%DB%8C-2-%D8%A8%D8%B9%D8%AF%DB%8C-%D8%AF%D8%B1-%D8%B2%D8%A7%D9%88%DB%8C%D9%87-%D9%85%D9%88%D8%B1%D8%AF-%D9%86%D8%B8%D8%B1)



جابجا کردن آبجکت در فضای 2 بعدی در زاویه مورد نظر - Navid_t - 14/4/1397

سلام دوستان
من یک تابع یا متد میخوام که در فضای 2 بعدی برای یک آبجکت زاویه گلوبال و سرعت بگیره و آبجت رو در اون زاویه و با سرعتی که گرفته حرکت بده، یه چیزی مشابه تابع motion_set در گیم میکر. ( آبجکت رو نچرخونه و فقط در راستای زاویه ای که میگیره حرکتش بده ) چیزی آماده برای اینکار در یونیتی ندیدم و احتمال میدم باید نوشته بشه، کسی میتونه راهنمایی کنه؟
ممنونم


RE: جابجا کردن آبجکت در فضای 2 بعدی در زاویه مورد نظر - qwerty13 - 15/4/1397

به نظر من چاره ی کار استفاده از sin و cos ــه.
ببینید ما توی یونیتی یک فیزیکی داریم که شبیه سازی واقعیتو میکنه؛ اگر میخواید با یک تابع به جسم سرعت ثابت بدید باید اصطکاک رو صفر کنید.
بعد از اون میتونید با یک addForce یی که x و y ش اینطوری محاسبه میشه بدون چرخوندن در زاویه مورد نظر نیرو وارد کنید تا سرعت بگیره:

1- از اونجایی که زاویه ورودی c# به رادیان هست باید زاویه تونو اینطوری به رادیان تبدیل کنید:

کد:
float radians = degrees * Mathf.Deg2Rad;

2- بعد باید مقدار نیرو رو مشخص کنید مثلا float niroo = 2

3- مقدار x ما برابر هست با f cos t یعنی:
کد:
x = niroo * cos(radians);

4- مقدار y ما هم برابر هست با f sin t یعنی:
کد:
y = niroo * sin(radians);

در نهایت این x و y رو در یک addForce وارد کنید و به امید خدا کار خواهد کرد...