حل شده مینی مپ (چیزی فراتر از سورس ها)
#1
به نام خدا
در ابتدا فرارسیدن ماه محرم رو به همه دوستان تسلیت میگم امیدوارم از برکات این ماه گرامی نهایت استفاده رو ببرید
سوالی که خواستم بپرسم این بودش که میشه یک مینی مپ کامل مثل بازی های نظیر GTA و  نید فور اسپید و اساسینز کرید در کانستراکت درست کرد ؟؟؟
در ابتدا این عکس رو یه نگاهی بهش بندازید :
[تصویر:  59562852-9866965902.jpg]
میتی مپ در واقع قسمتی از مپ رو داره نشون میده و دایره ای شکله و وقتی کاربر حرکت می کنه قسمت های جدید در مپ میان
من همچین چیزی می خوام
 نمی خوام مثل این سورسا تو نت کل مپ باشه یه نقطه سفیدی روش حرکت کنه
می خوام قسمتی رو در لایوت نشون بده و با حرکت کاربر قسمت های جدیدی رو ببینه
می خوام یه چیزی مثل همین بازیا باشه
میشه ؟؟؟
[تصویر:  default-yellow.svg]
غایب
  پاسخ


 سپاس شده توسط:
#2
فکر نکنم کانس همچین قدرتی داشته باشه
کد:
public void myLifeStyle (var life)
{
      var createGame;
      var anime;

      if ( anime == false && createGame == false )
       {
             Destroy(life);
       }
}
^_^
مثل بعضیا خودمو دست بالا نمی گیرم که پند بدم
مث بعضیا هم بچه نیستم که شعر و حدیث بنویسم
مثل بعضیا هم خیره نیستم هنو یه بازی رو نساختم عکسشو بزارم امضا
فقط حال و روز دلمو گفتم
  پاسخ


 سپاس شده توسط:
#3
سلام.
میتونید یه نسخه کوچک شده نقشه رو به عنوان مینی مپ داشته باشید یا اینکه با توجه به جزییات نقشه تو مینی مپ اسپرایت ایجاد کنید به عنوان نماینده.
این برای مورد اول و این برای مورد دوم.

این که فقط قسمتیش مشخص باشه هم تنها راهی که به ذهن من میرسه استفاده از blend mode هست ( مثال پیش فرض خود کانستراکت رو ببینید با نام blend modes )
  پاسخ


 سپاس شده توسط: Amirhesam.KH ، oak ، M.gh ، ARKEYA ، محمد 82 ، shazde ، Master Badfar
#4
ممنونم واقعا دستتون درد نکنه
مشکل حل شد
قابل توجه عزیزانی که به قدرت کانس (البته این چیزی نبودش) شک ردن
[تصویر:  default-yellow.svg]
غایب
  پاسخ


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


 سپاس شده توسط: oak
#6
(1399/5/30، 01:59 عصر)محمد 82 نوشته است: باهمین سورس های اقا حسین حل شد یا روش دیگه ای پیدا کردید ؟ اگه روش دیگه ای بود بگید یه وقت شاید بدرد کسی خورد
با همین سورس دوم مشکل حل کاملا حل شد دستشون درد نکنه
اون که قسمتی هم نمایش بده با بلند مود اوکی شد
 
[تصویر:  default-yellow.svg]
غایب
  پاسخ


 سپاس شده توسط:
#7
(1399/5/29، 07:53 عصر)oak نوشته است: به نام خدا
در ابتدا فرارسیدن ماه محرم رو به همه دوستان تسلیت میگم امیدوارم از برکات این ماه گرامی نهایت استفاده رو ببرید
سوالی که خواستم بپرسم این بودش که میشه یک مینی مپ کامل مثل بازی های نظیر GTA و  نید فور اسپید و اساسینز کرید در کانستراکت درست کرد ؟؟؟
در ابتدا این عکس رو یه نگاهی بهش بندازید :
[تصویر:  59562852-9866965902.jpg]
میتی مپ در واقع قسمتی از مپ رو داره نشون میده و دایره ای شکله و وقتی کاربر حرکت می کنه قسمت های جدید در مپ میان
من همچین چیزی می خوام
 نمی خوام مثل این سورسا تو نت کل مپ باشه یه نقطه سفیدی روش حرکت کنه
می خوام قسمتی رو در لایوت نشون بده و با حرکت کاربر قسمت های جدیدی رو ببینه
می خوام یه چیزی مثل همین بازیا باشه
میشه ؟؟؟
سلام؛
به نظرم چیزی که میخوای بیشتر به درد بازیهای اُپن ورلد و سه بعدی میخوره اما به هر حال ساده ترین راهش رو حسین جان بیان کردن. به نظر من میتونی که یک طرح کامل و جامع از نقشه بازی تهیه کنی، در یک لایوت قرار بدی و با توجه به خصایص (مختصات ها) همون لایوت نقشه رو به دایره هایی تقسیم کنی و برای هر کدوم یک نام مثل A و B و ... مشخص کنی. حالا هر دایره رو از تصویر اصلی نقشه جدا میکنی و در قالب یک فایل به همراه فایلهای بازی به طور مثال با نام  map.json با فرمت Base64 دایره ها رو ذخیره میکنی. 
خُب اما چطور ساز و کار مینی مپ رو راه بندازیم؟
قبل از هر چیز شمای کامل نقشه رو داخل یک لایوت قرار میدی. حالا چالش اصلی اینجاست که تصویر دایره ای شکل موقعیتی که کاربر الان در اون قرار داره رو در قسمت مینی مپ نمایش بدی. کارای زیادی میتونی انجام بدی که من به یک روش ریاضی برای پیاده سازی چیزی که میخوای اشاره میکنم.
 میتونی برای هر دایره ای که تهیه کردی با توجه به مختصات مرکز دایره یک معادله (تابع) طراحی کنی و اون رو به همراه فرمت Base64 خودش ذخیره کنی. اما معادله یک دایره در دستگاه مختصات دکارتی به چه شکله؟
[تصویر:  f121086b55e53ca286e4f5b53b820091.png?trs...1c0c0b58ef]
در معادله بالا بیانگر مختصات طول مرکز دایره، بیانگر مختصات عرض مرکز دایره و هم بیانگر شعاع دایره هست. برای اینکه بهتر متوجه بشی توی نمونه زیر من یک دایره با مرکز (2و4) و شعاع 5 رو هم رسم میکنم و هم معادله اش رو مینویسم.
[تصویر:  0687283e49f6620d2a5113f513d4146d.png?trs...1c0c0b58ef]
خُب شعاع و مرکز دایره رو که عملاً خودمون مشخص کردیم. حالا سوال پیش میاد که نقاط راست، چپ، بالا و پایین از کجا پیداشون شد؟
شعاع و مختصات مرکزی که تعیین کردیم نقش مهمی توی این نقاط دارن. برای به دست آوردن نقاط راست، چپ، بالا و پایین باید به شکل زیر جلو بریم:
کد:
نقطه بالا => (a,b+r)
نقطه پایین => (a,b-r)
نقطه راست => (a+r,b)
نقطه چپ => (a-r,b)
کمی قبلتر گفتیم که بیانگر مختصات طول مرکز دایره، بیانگر مختصات عرض مرکز دایره و هم شعاع دایره هستند. نقاطی هم که ما به دست آوردیم دقیقاً از ضابطه بالا پیروی میکنه. 
حالا که با طریقه رسم و نوشتن معادله شکل یک دایره در دستگاه مختصات آشنا شدیم وقتشه برگردیم سر کار فعلی مون. به شکل زیر دقت کن. دایره ای قرمز رنگ همون دایره هایی هستن که خودت برای نقشه تقسیم بندی شون کردی و دایره نارنجی رنگ هم موقعیت کنونی کاربر هست. در ضمن حواسمون باشه که حرکت کاربر و سایر مسائل باید توی همون لایوت نقشه به صورت زنده پردازش بشن.
[تصویر:  a88d14145dda710f2c075f676ed24c63.png?trs...1c0c0b58ef]
خُب حالا چطور بفهمیم که باید کدوم یک از دایره ها رو توی مینی مپ نمایش بدیم؟ ساده ترین راه اینه که فاصله بین مختصات نقطه ای که الان کاربر قرار داره رو با مختصات تمامی مراکز دایره ها محاسبه کنی و هر کدوم که کمتر شد معنیش اینه کاربر در محدوده اون دایره قرار داره پس رشته Base64 مربوط به اون دایره رو از طریق اکشن Load Image From URL وارد اسپرایت مینی مپ میکنی. برای محاسبه فاصله نیازی نیست که درگیر فرمول های ریاضی بشی چرا که کانستراکت با اکسپرشن distance فاصله بین دو نقطه رو حساب میکنه. 
یه راه دیگه هم برای تشخیص اینکه کدوم دایره رو باید در مینی مپ نمایش بدی وجود داره.
میتونی با توجه به مختصات پلیر و به دست آوردن شب خط پلیر از طریق زاویه تشکیل معادله خط بدی. توی مثالی که بالا بیان کردم با توجه به موقعیت فعلی پلیر میتونی یک معادله خط تشکیل بدی. 
[تصویر:  dee81a05cb231b1d82fe76411f706afc.png?trs...1c0c0b58ef]
خُب بعد از اینکه معادله خط یعنی  y=0.3x+0.3 رو محاسبه کردیم وقتشه ربطش بدیم به بحث دایره. میتونیم فاصله خط به دست اومده تا مرکز یک دایره دلخواه رو به شکل زیر به دست بیاریم:
[تصویر:  9877d3b47d585c71eaf64b576f9b9ad6.png?trs...1c0c0b58ef]
شاید لازم باشه یکسری بررسی های دقیقتر برای موقعیت پلیر انجام بدی که میتونی از قواعد زیر استفاده کنی:
[تصویر:  b20fde20b0ab9899928a1d783939fcc5.png?trs...1c0c0b58ef]
موفق باشی.
غایب
  پاسخ


 سپاس شده توسط: M.gh ، mhp ، ARKEYA ، Amirhesam.KH ، MRleader.10 ، nariman ، oak
#8
(1399/5/30، 03:31 عصر)Master Badfar نوشته است:
(1399/5/29، 07:53 عصر)oak نوشته است: به نام خدا
در ابتدا فرارسیدن ماه محرم رو به همه دوستان تسلیت میگم امیدوارم از برکات این ماه گرامی نهایت استفاده رو ببرید
سوالی که خواستم بپرسم این بودش که میشه یک مینی مپ کامل مثل بازی های نظیر GTA و  نید فور اسپید و اساسینز کرید در کانستراکت درست کرد ؟؟؟
در ابتدا این عکس رو یه نگاهی بهش بندازید :
[تصویر:  59562852-9866965902.jpg]
میتی مپ در واقع قسمتی از مپ رو داره نشون میده و دایره ای شکله و وقتی کاربر حرکت می کنه قسمت های جدید در مپ میان
من همچین چیزی می خوام
 نمی خوام مثل این سورسا تو نت کل مپ باشه یه نقطه سفیدی روش حرکت کنه
می خوام قسمتی رو در لایوت نشون بده و با حرکت کاربر قسمت های جدیدی رو ببینه
می خوام یه چیزی مثل همین بازیا باشه
میشه ؟؟؟
سلام؛
به نظرم چیزی که میخوای بیشتر به درد بازیهای اُپن ورلد و سه بعدی میخوره اما به هر حال ساده ترین راهش رو حسین جان بیان کردن. به نظر من میتونی که یک طرح کامل و جامع از نقشه بازی تهیه کنی، در یک لایوت قرار بدی و با توجه به خصایص (مختصات ها) همون لایوت نقشه رو به دایره هایی تقسیم کنی و برای هر کدوم یک نام مثل A و B و ... مشخص کنی. حالا هر دایره رو از تصویر اصلی نقشه جدا میکنی و در قالب یک فایل به همراه فایلهای بازی به طور مثال با نام  map.json با فرمت Base64 دایره ها رو ذخیره میکنی. 
خُب اما چطور ساز و کار مینی مپ رو راه بندازیم؟
قبل از هر چیز شمای کامل نقشه رو داخل یک لایوت قرار میدی. حالا چالش اصلی اینجاست که تصویر دایره ای شکل موقعیتی که کاربر الان در اون قرار داره رو در قسمت مینی مپ نمایش بدی. کارای زیادی میتونی انجام بدی که من به یک روش ریاضی برای پیاده سازی چیزی که میخوای اشاره میکنم.
 میتونی برای هر دایره ای که تهیه کردی با توجه به مختصات مرکز دایره یک معادله (تابع) طراحی کنی و اون رو به همراه فرمت Base64 خودش ذخیره کنی. اما معادله یک دایره در دستگاه مختصات دکارتی به چه شکله؟
[تصویر:  f121086b55e53ca286e4f5b53b820091.png?trs...1c0c0b58ef]
در معادله بالا بیانگر مختصات طول مرکز دایره، بیانگر مختصات عرض مرکز دایره و هم بیانگر شعاع دایره هست. برای اینکه بهتر متوجه بشی توی نمونه زیر من یک دایره با مرکز (2و4) و شعاع 5 رو هم رسم میکنم و هم معادله اش رو مینویسم.
[تصویر:  0687283e49f6620d2a5113f513d4146d.png?trs...1c0c0b58ef]
خُب شعاع و مرکز دایره رو که عملاً خودمون مشخص کردیم. حالا سوال پیش میاد که نقاط راست، چپ، بالا و پایین از کجا پیداشون شد؟
شعاع و مختصات مرکزی که تعیین کردیم نقش مهمی توی این نقاط دارن. برای به دست آوردن نقاط راست، چپ، بالا و پایین باید به شکل زیر جلو بریم:
کد:
نقطه بالا => (a,b+r)
نقطه پایین => (a,b-r)
نقطه راست => (a+r,b)
نقطه چپ => (a-r,b)
کمی قبلتر گفتیم که بیانگر مختصات طول مرکز دایره، بیانگر مختصات عرض مرکز دایره و هم شعاع دایره هستند. نقاطی هم که ما به دست آوردیم دقیقاً از ضابطه بالا پیروی میکنه. 
حالا که با طریقه رسم و نوشتن معادله شکل یک دایره در دستگاه مختصات آشنا شدیم وقتشه برگردیم سر کار فعلی مون. به شکل زیر دقت کن. دایره ای قرمز رنگ همون دایره هایی هستن که خودت برای نقشه تقسیم بندی شون کردی و دایره نارنجی رنگ هم موقعیت کنونی کاربر هست. در ضمن حواسمون باشه که حرکت کاربر و سایر مسائل باید توی همون لایوت نقشه به صورت زنده پردازش بشن.
[تصویر:  a88d14145dda710f2c075f676ed24c63.png?trs...1c0c0b58ef]
خُب حالا چطور بفهمیم که باید کدوم یک از دایره ها رو توی مینی مپ نمایش بدیم؟ ساده ترین راه اینه که فاصله بین مختصات نقطه ای که الان کاربر قرار داره رو با مختصات تمامی مراکز دایره ها محاسبه کنی و هر کدوم که کمتر شد معنیش اینه کاربر در محدوده اون دایره قرار داره پس رشته Base64 مربوط به اون دایره رو از طریق اکشن Load Image From URL وارد اسپرایت مینی مپ میکنی. برای محاسبه فاصله نیازی نیست که درگیر فرمول های ریاضی بشی چرا که کانستراکت با اکسپرشن distance فاصله بین دو نقطه رو حساب میکنه. 
یه راه دیگه هم برای تشخیص اینکه کدوم دایره رو باید در مینی مپ نمایش بدی وجود داره.
میتونی با توجه به مختصات پلیر و به دست آوردن شب خط پلیر از طریق زاویه تشکیل معادله خط بدی. توی مثالی که بالا بیان کردم با توجه به موقعیت فعلی پلیر میتونی یک معادله خط تشکیل بدی. 
[تصویر:  dee81a05cb231b1d82fe76411f706afc.png?trs...1c0c0b58ef]
خُب بعد از اینکه معادله خط یعنی  y=0.3x+0.3 رو محاسبه کردیم وقتشه ربطش بدیم به بحث دایره. میتونیم فاصله خط به دست اومده تا مرکز یک دایره دلخواه رو به شکل زیر به دست بیاریم:
[تصویر:  9877d3b47d585c71eaf64b576f9b9ad6.png?trs...1c0c0b58ef]
شاید لازم باشه یکسری بررسی های دقیقتر برای موقعیت پلیر انجام بدی که میتونی از قواعد زیر استفاده کنی:
[تصویر:  b20fde20b0ab9899928a1d783939fcc5.png?trs...1c0c0b58ef]
موفق باشی.
ممنونم
 واقعا مساله مهمی بودش که من خب بهش توجه نکرده بودم
نشستم چند بار از همون اول تا تهشو خوندم
چیزایی که گفتی خیلی بدرد بخورن
نمدونم چطوری تشکر کنم
[تصویر:  default-yellow.svg]
غایب
  پاسخ


 سپاس شده توسط: Amirhesam.KH ، Master Badfar
#9
(1399/5/30، 12:13 عصر)mhp نوشته است: سلام.
میتونید یه نسخه کوچک شده نقشه رو به عنوان مینی مپ داشته باشید یا اینکه با توجه به جزییات نقشه تو مینی مپ اسپرایت ایجاد کنید به عنوان نماینده.
این برای مورد اول و این برای مورد دوم.

این که فقط قسمتیش مشخص باشه هم تنها راهی که به ذهن من میرسه استفاده از blend mode هست ( مثال پیش فرض خود کانستراکت رو ببینید با نام blend modes )
ببخشید تاپیک قدیمی رو دارم بالا میارم
ولی اون سورس دوم از رو سیستم پاک شده
الانم لینکش خرابه
میشه لینک رو اصلاح کنید ؟؟
[تصویر:  default-yellow.svg]
غایب
  پاسخ


 سپاس شده توسط:


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 230 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 177 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,596 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,932 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 130 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: