(1394/9/22، 07:40 عصر)wowxpria نوشته است:دمت گرم داداش(1394/9/22، 04:36 عصر)arminfk نوشته است: on start layot >> monster >>set angel
و حالا مشخصات
player x
player y
دوست عزیز این هیچ ربطی به حرکت دشمن به سمت پلیر نداره بلکه مختصات یا زاویه یک شئ را مشخص می کنه (و برای بازی هایی که در چهار جهت حرکت دارد استفاده می شود نه بازی پلتفرمی) شما برای اینکه دشمن حرکت کنه ابتدا بهش رفتار پلتفرم (platform) میدین سپس کنترول اون را در قسمت پنجره ویژگی ها به NO تغییر میدین تا کنترول اون دست شما نباشه:
کد:Defult controls = no
سپس می تونید از رویداد های (actions) داخل اسپریت دشمن که بهش رفتار پلتفرم دادین , از گزینه های set vector X و set vector Y استفاده کنید که برای جرکت دشمن باید در محور X باشد و به سمت پلیر:
کد:Every tick >>> Enamy.set vector X = player.x
الان در اونت بالا پلیر شما هر سمت (محور X) حرکت کند اسپریت دشمن هم به آن سمت حرکت می کند ولی قصد ما این است که دشمن به سمت ما حرکت کند پس یک - به مختصات پلیر اضافه می کنیم:
کد:Every tick >>> Enamy.set vector X = -player.x
الان اگر پلیر شما سمت چپ باشد و دشمن سمت راست و بازی را تست کنید میبنید که دشمن به سمت پلیر حرکت می کند ولی وقتی از پلیر رد می شود باید دوباره دنبال پلیر ما بیوفتد ولی چون گفتیم - پس به راه خود ادامه میدهد برای اینکه آن را نیز درست کنیم می توانیم از روش های مختلفی استفاده کنیم.
اینم یک روش ساده:
ابتدا به دشمن خود رفتار پلتفرم داده و کنترول آن را روی No بگذارید سپس یک متغیر از نوع نوشته (text) به اسپریت دشمن اضافه کرده و مقدار آن را "Right" بگذارید:
حالا مثل زیر عمل کنید:
اگر مختصات محور X پلیر (Compare X) بزرگتر از مقدار محور X دشمن بود مقدار متغیر دشمن به "left" و اگر کوچکتر بود به "Right"
تغییر کنه.
حالا تو اونت سوم گفتیم اگر مقدار متغیر برابر "left" بود دشمن برعکس ما حرکت کنه در غیر اینصورت (Else) به سمت پلیر ما.
اینم سورس
حل شده حرکت دشمن به سمت پلیر
|
1394/9/23، 05:38 عصر
سلام
این روش یه مشکلی داری اونم اینه که اگه دو تا دشمن باشه یکی از دشمنا نزدیک میاد و دومی با یه فاصله ای میمونه راه حل این چیه؟
1394/9/23، 11:41 عصر
(1394/9/23، 05:38 عصر)kingprado نوشته است: سلام سلام، با تشکر از مهدی عزیز، مشکلی که شما بهش اشاره کردید به خاطر مسئله پیک کردن در کانستراکت است. در مواردی که تعداد اینستنس های یک شی بیشتر از یک عدد است نباید از دستور else استفاده کرد برای اینکه else شیئی را پیک نمیکند. شما بجای else باید این ایونت را قرار دهید: کد: Compare instance variable >>>Move = "Right" بعلاوه اگر با استفاده از دستور همپوشانی (overlapping) در هنگام برخورد دشمن به پلیر رفتار پلتفرم اینستنس های دشمن را غیر فعال کنید، به نظر من زیباتر خواهد بود(از لرزش در اسپرایت دشمن هنگام برخورد با پلیر جلوگیری خواهد کرد) به مانند این سورس
--------------\\\\\\\\\\*******\\\\\\\\---------------------------\\\\\\\\\\**********\\\\\\\---------
![]() *«يَرْفَعِ اللَّهُ الَّذِينَ آمَنُوا مِنْكُمْ وَ الَّذِينَ أُوتُوا الْعِلْمَ دَرَجاتٍ//خداوند کسانی را که ایمان آورده اند و کسانی را که دانش به آنان عطا شده است.درجات عظیمی می بخشد.»(قرآن کریم، المجادلة، 11 )* *پیامبر اکرم (ص) فرمود:«علم آموزي بر هر مرد و زن مسلمان، واجب است.»(مصباح الشريعة، ج 13) |
موضوعهای مشابه… | |||||
موضوع | نویسنده | پاسخ | بازدید | آخرین ارسال | |
![]() |
پرداخت درون برنامه مایکت کوردوا | ya mahdi | 0 | 230 |
1404/1/17، 05:43 عصر آخرین ارسال: ya mahdi |
نحوه خروجی اندروید کوردوا | ya mahdi | 0 | 182 |
1404/1/11، 04:06 عصر آخرین ارسال: ya mahdi |
|
![]() |
حل شده مقادير لازم در environment variable | ᔕinaᗪehghani | 24 | 11,601 |
1403/10/23، 12:10 صبح آخرین ارسال: Tggi |
تپسل .....فروشگاه | Hamidreza | 3 | 1,932 |
1403/10/22، 11:57 عصر آخرین ارسال: Tggi |
|
خروجی اندروید با Intel xdk | ya mahdi | 0 | 131 |
1403/8/25، 02:08 عصر آخرین ارسال: ya mahdi |