اضطراری ، حرکت شیء به جای مشخص
#1
سلام دوستان من یه شیء دارم که میخوام به یه جای مشخص بره . مثلا از سمت چپ صفحه وارد بشه و با سرعت مشخصی بره به سمت راست صفحه . حالا کاربر میتونه به اراده خودش موانعی در بین راه بزاره . میخوام بگم این شیء وقتی به مانع برخورد کرد به بالا یا پایین حرکت کنه تا مانع تموم بشه (مانع مربعی) و وقتی مانع رو بارفتن به بالا یا پایین رد کرد دوباره زاویه اش به سمت هدف مشخص (سمت راست صفحه) تغییر پیدا کنه و به سمتش حرکت کنه . حالا چون این اهداقو کاربر مشخص میکنه چطوری بگم نرم این کارو بکنه ؟ ایا پلاگینی از پلاگین های کانستراکت این کارو میکنه ؟ نمیدونم سورس یا تاپیکی دراین مورد وجود داره یا نه اما چون فوری بود نگشتم . ممنون میشم راهنمایی کنید یا اگه تاپیکی هست لینک بدید.
استودیو بازیسازی ایروید
جدید ترین ها : شهرزاد ، دربند;1357 و ATOM
[تصویر:  ads.gif]
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#2
برای درک بهتر یه نمونه پیدا کردم ، ببینید مثلا بازی desktop tower defence 1.5 رو ببینید ، چطور اون اجزای کوچیک میان و راهشون رو پیدا میکنن ، اونطوری میخوام که باوجود موانعی که کاربر میزاره راهشون رو به سمت راست یا پایین صفحه پیدا میکنن . این شبیه ترین چیز به چیزیه که من میخوام .
استودیو بازیسازی ایروید
جدید ترین ها : شهرزاد ، دربند;1357 و ATOM
[تصویر:  ads.gif]
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#3
از پلاگین move to استفاده کنید واسه نرم کردن حرکت ها
و اینکه بگید وقتی به آبجکت خورد ، زاویش به بالا حرکت کنه همین
 
[تصویر:  default-yellow.svg]
  پاسخ


 سپاس شده توسط: M.gh ، ᔕinaᗪehghani
#4
بعله اینو که خودم میدونم ، ولی معلوم نیست باید بره به بالا یا نه . چون موانع رو کاربر مشخص میکنه ، الان چنتا عکس میزارم که متوجه موضوع بشید .

مثلا ببینید در شکل های زیر (موانع : توپ های شلیک کننده) اصلا قبل برخورده اون دایره های کوچیک میفهمن باید چطوری برن و راه رو پیدا میکنن با هوش مصنوعی . چون موانع توسط کاربر ایجاد میشه قابل تشخیص اولیه نیست و باید در لحظه راهشون رو پیدا کنن از سمت چپ به سمت راست صفحه . حالا فک کنید من میخوام همچین چیزی بسازم ، باید چطوری بگم ؟ 
[تصویر:  1.png]
[تصویر:  2.png]
استودیو بازیسازی ایروید
جدید ترین ها : شهرزاد ، دربند;1357 و ATOM
[تصویر:  ads.gif]
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#5
سلام؛
به نظر من شما سه حالت پیش رو دارین.
حالت اول اینه که بلدید با رفتار Path Finding کار کنید.
حالت دوم اینه که شما بلد نیستید با این رفتار کار کنید. در هر صورت باید خودتون متوسل به ریاضیات و مبحث گراف ها بشین.
حالت سوم اینه که از این رفتار که مختص تایل مپ ها هست استفاده کنین و مثالی هم که میتونه شما رو کمک کنه این هست که در تاپیکی که معرفی کردم موجوده.
قبل از هر چیز باید بدونید الگوریتمی که در رفتار Path Finding استفاده شده A* Search (جستجوی A*) نام داره. این الگوریتم قادره مسیر از مبدأ تا مقصد رو با وجود موانع شناسایی کنه اما چون فهمش نیاز به دونستن مباحثی مثل هیستوریک و وزن گراف و ... داره و ممکنه پیچیده به نظر بیاد از گفتن این روش صرف نظر میکنم و یک روش ساده تر رو که مبتنی بر تایل (Tile) هست رو بررسی می کنیم. دقت کن که پروسه ای که در ادامه شرح میدم مشابه همون پروسه ای هست که در رفتاری که معرفی کردم اتفاق میفته اما رفتاری که معرفی کردم یکم پیشرفته تر و بهینه تر عمل میکنه. البته ادامه مطلب فقط صرف آشنایی هست.
فرض کنیم نقشه ای مشابه شکل زیر داریم: (X بیانگر دیوار و مسیر مسدود (مانع)، S نقطه شروع (مبدأ)، _ مسیرهای باز و O هم نقطه مقصد) 
کد:
  1 2 3 4 5 6 7 8
X X X X X X X X X X
X _ _ _ X X _ X _ X 1
X _ X _ _ X _ _ _ X 2
X S X X _ _ _ X _ X 3
X _ X _ _ X _ _ _ X 4
X _ _ _ X X _ X _ X 5
X _ X _ _ X _ X _ X 6
X _ X X _ _ _ X _ X 7
X _ _ O _ X _ _ _ X 8
X X X X X X X X X X
قبل از هر چیز باید یک لیست شامل مختصات های هر یک از المان های موجود در نقشه تهیه کنیم. اولین مقداری که باید در این لیست باید بگنجونیم نقطه نهایی هست یعنی (3,8,0). به زبان ساده تر انگار داریم اینجا یک مجموعه شامل مختصات های المان های موجود تشکیل میدیم. به هر یک از اعضای مجموعه یک شمارنده اختصاص میدیم. بعد بر روی تک تک اعضای مجموعه پردازش انجام میدیم و برای هر یک از اعضا به شکل زیر عمل می کنیم:
  • * 1- یک لیست از چهار المان مجاور عضو مورد پردازش تشکیل میدیم. لیست حاوی چهار المان مجاور عضو (3,8,0) { (۲٬۸٬۱),(۳٬۷٬۱),(۴٬۸٬۱),(۳٬۹٬۱) } خواهد شد. 
  • * 2- بعد عناصر موجود در این لیست جدید بررسی می‌شود که اگر آن عنصر دیوار بود یا در لیست اصلی مختصاتی (مجموعه اولیه که تشکیل دادیم) مشابه با شمارندهٔ کمتر وجود داشت حذف می‌شود.
با اتمام مراحل 1 و 2 اصطلاحاً یک دور (راند) را به اتمام رسانده ایم. پس از اتمام یک راند لیست تشکیل شده در مرحله انتجاب چهار المان مجاور را به انتهای لیست اصلی (مجموعه اولیه) اضافه می کنیم (البته با توجه به مرحله شماره 2). در نهایت هم به سراغ دیگر اعضای مجموعه اصلی جهت پردازش میریم.
پس هر راند (دور) اعضای مجموعه اصلی به شکل زیر خواهند شد:
[تصویر:  dea.png]
ما از نقطه نهایی شروع به پردازش کردیم و به نقطه اولیه (1,3,7) رسیدیم. با رسیدن به نقطه اولیه یعنی بالاخره کار تموم شده. اینکه در کدوم راند به نقطه نهایی برسیم بستگی به این داره که چقدر خوش شانس باشیم. الگویی که ما رو به مقصد میرسونه طبق محاسباتی که در راند سوم انجام دادیم به شکل (1,3,7) -> (1,4,6) -> (1,5,5) -> (1,6,4) -> (1,7,3) -> (1,8,2) -> (2,8,1) -> (3,8,0) خواهد بود. 
 المان هایی که با علامت نشان داده شده اند میتونن هم ما رو از مبدأ به مقصد و هم از مقصد به مبدأ منتقل کنند.
کد:
  1 2 3 4 5 6 7 8
X X X X X X X X X X
X _ _ _ X X _ X _ X 1
X _ X _ _ X _ _ _ X 2
X S X X _ _ _ X _ X 3
X X  _ X _ _ _ X 4
X  X X  X _ X 5
X X   X  X _ X 6
X X X   X _ X 7
X O X   _ X 8
X X X X X X X X X X
موفق باشین.
غایب
  پاسخ


 سپاس شده توسط: محمد 82 ، ᔕinaᗪehghani
#6
روشی که معرفی کردید خیلی سخته . اگه میشه یه سورس بدید یا اگه بشه باهمون پلاگین path finding ساختش که خیلی بهتره . به نظرم باید روش ساده تری هم باشه از این همه کار . علاوه براین متوجه توضیحاتی که دادید نشدم شاید چون سخت بود اما نمونه ای که گذاشتید خیلی خوبه تو حالت سوم . اما پیشنهاد میکنم بازی فلش انلاین desktop tower defence 1.5 رو بازی کنید و حرکت گوی هارو ببینید و اگه راهی بود به من بگید چون این بازی بیشترین تطبیق رو با چیزی که میخوام داره . 
استودیو بازیسازی ایروید
جدید ترین ها : شهرزاد ، دربند;1357 و ATOM
[تصویر:  ads.gif]
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#7
الان من سورس خود کانستراکت path finding رو دیدم و فوق العاده بودم . هم ساده و هم همونی که میخوام . اما نمیدونم چرا وقتی اجراش میکنم از شیء های solid وسط رد میشه .

یعنی وقتی اسپرایت سولاید ساخته خودم هست مشکلی نیست ازش مسیر یابی میکنه . اما گفتم وقتی یه اتفاقاتی افتاد و کاربر هرجا کلید کرد ازین شیء ها بوجود بیاد که قابلیت سولایدشونم فعاله اما نمیدونم چرا به اونا اهمیتی نمیده و ازشون رد میشه . الان تنها مشکلم همینه فقط اگه کمک کنید ممنون میشم . چرا اونایی که خودم میزارم و بعد تست میکنم درسته اما اونایی که گفتم کلیک شد ساخته بشه اونجا رو ازشون رد میشه .
استودیو بازیسازی ایروید
جدید ترین ها : شهرزاد ، دربند;1357 و ATOM
[تصویر:  ads.gif]
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#8
(1399/4/10، 02:34 صبح)محمد 82 نوشته است: الان من سورس خود کانستراکت path finding رو دیدم و فوق العاده بودم . هم ساده و هم همونی که میخوام . اما نمیدونم چرا وقتی اجراش میکنم از شیء های solid وسط رد میشه .
یعنی وقتی اسپرایت سولاید ساخته خودم هست مشکلی نیست ازش مسیر یابی میکنه . اما گفتم وقتی یه اتفاقاتی افتاد و کاربر هرجا کلید کرد ازین شیء ها بوجود بیاد که قابلیت سولایدشونم فعاله اما نمیدونم چرا به اونا اهمیتی نمیده و ازشون رد میشه . الان تنها مشکلم همینه فقط اگه کمک کنید ممنون میشم . چرا اونایی که خودم میزارم و بعد تست میکنم درسته اما اونایی که گفتم کلیک شد ساخته بشه اونجا رو ازشون رد میشه .
طبق سورس مثال Path Finding کانستراکت اگر از اکشن سیستمی  Create Object برای ساخت یک نمونه از موانع که رفتار سالید (Solid) دارن استفاده کنین و لایه رو در این اکشن روی لایه 0 (Backgrounds) تنظیم کنین نباید مشکلی داشته باشین و همه چیز به خوبی پیش میره و مسیریابی در صورتی که ممکن باشه انجام میشه و در غیر اینصورت (در صورتی که موانع جلوی حرکت شیء را بگیرند و مسیریابی انجام نشود) رفتار Flash شیء اسپرایت به مدت نیم ثانیه فعال شده و چشمک میزند.
برای تنظیم تندی و یا کندی جرکت شیء در لایوت میتونین از اکشن Set acceleration کمک بگیرین و جاهایی که لازمه سرعت رو افزایش یا کاهش بدین. با این کار میتونین نرم بودن حرکت و یا تند بودن حرکت رو به سادگی مدیریت کنید.
در ضمن توضیحاتی که در ارسال قبلی نوشتم صرفاً یک الگوریتم بسیار پایه مسیریابی بود و همونطور که گفتم خوندنش میتونه به شما درک بهتری از نحوه کار الگوریتم های مسیریابی بده و دونستنش صد درصد لازم نیست و صد البته خروجی روش یاد شده چندان سریع هم نیست. البته اشاره هم کردم که رفتار Path Finding پیشفرض کانستراکت از الگوریتم A* Search استفاده میکنه.
موفق باشین.
غایب
  پاسخ


 سپاس شده توسط: shazde ، محمد 82 ، ᔕinaᗪehghani
#9

سلام
برای اینکه مسیریاب کانستراکت درست کار کنه به نظرم باید بگی هر بار که یکی از اون اسلحه ها ساخته شد ، دشمن دوباره مسیر رو پیدا کنه . متاسفانه دیگه کانستراکت ندارم که برات با پروژه توضیح بدم

اما مشکل دیگه ای که توی این تیپ بازی ها دیدم و به نظرم در آینده بش برخورد میکنی اینه که شاید بازیکن سعی کنه مسیر حرکت دشمن رو با اسلحه ها ببنده و اون زمان دیگه مسیریاب نمیتونه مسیریابی کنه چون عملاٌ مسیر مسدود شده . از همین الان به فکر باشید که مثلا اگر قراره روی مختصات Y سی تا خونه برای ساخت باشه بازیکن از 29 تا بیشتر نتونه بسازه و مسیر باز بمونه
[تصویر:  Hurricanes.jpg]
  پاسخ


 سپاس شده توسط: محمد 82 ، shazde ، ᔕinaᗪehghani
#10
نه خیر درست نشد . ببینید از مانعی که من تو لایه بک گراند ساختم راحت رد میشه درصورتیکه چون راه رو با مانعم بستم باید از یه راه باز بره :
[تصویر:  1.png]

اگه عکس باز نمیشه (http://s12.picofile.com/file/8401551600/1.png)
استودیو بازیسازی ایروید
جدید ترین ها : شهرزاد ، دربند;1357 و ATOM
[تصویر:  ads.gif]
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  حل شده خرید درون برنامه مایکت در وب ویو Arianm 3 906 1402/4/25، 12:01 عصر
آخرین ارسال: Arianm
Wink سیستم شخصی سازی خودرو Arianm 1 409 1402/4/24، 05:21 عصر
آخرین ارسال: SHAMIRZA
  علت بازی نشدن وقتی نصب شده amirhosseinalizadehgharebaba81 1 339 1402/4/23، 02:22 عصر
آخرین ارسال: (:--ALI--:)
  چگونگی اجرا بازی روی ه‍است ایران (:--ALI--:) 8 1,483 1402/3/24، 04:50 عصر
آخرین ارسال: (:--ALI--:)
  وصل شدن به روح هاست قبلی :) amirhosseinalizadehgharebaba 2 2,040 1401/11/2، 09:43 عصر
آخرین ارسال: amirhosseinalizadehgharebaba

پرش به انجمن: