حل شده محدود کردن Drag
#1
سلام دوستان
چجور میشه drag را محدود کرد مثلا در عکس زیر اسپریت های سبز را به زرد وصل کردیم و اسپریت زرد ویزگی drag را دارد حالا می خوام بگم اگر اسپریت زرد در حال drag بود به اسپریت های قرمز پایین برخورد کرد دیگه پایین نره ولی بالا بره و اگر به بالا برخوذد کرد دیگه بالا نره ولی به پایین برود:
[تصویر:  bc829b6d60be96b31794c3ad2056a7bbbdc776ff.jpg]
  پاسخ


 سپاس شده توسط:
#2
علیک سلام
این سورس رو که براتون ساختم نگاه کنید، اگه متوجه نشدید بپرسید:
https://www.dropbox.com/s/hep7vuz367wkoq....capx?dl=1
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: wowxpria
#3
خیلی عالی بود ولی میشه کمی بیشتر توضیح بدین
  پاسخ


 سپاس شده توسط:
#4
در اینجا از اکسپرشن clamp استفاده کردیم. اکسپرشن‌های کانستراکت دقیقاً مثل توابع در ریاضی هستند. clamp یک تابع چند ضابطه‌ای هست که در ریاضی به صورت زیر تعریف می‌شه:
[تصویر:  png.latex?\large&space;\mathbf%7Bclamp(a,&...nd%7Bcases%7D%7D]

پس وقتی مثلاً می‌گیم در هر تیک، مختصّات Y اسپرایت Player رو برابر (clamp(Player.Y, 50, 300 بکن، یعنی اگه Player.Y که همون مختصّات Y پلیر هست بین 50 و 300 بود، خود همون مختصّات رو برگردون (مختصّات تغییری نمی‌کنه)، ولی اگه Player.Y کم‌تر از 50 بشه، عدد 50 رو برگردون (هر موقع مختصات ٰٰY کمتر از 50 بشه، اون رو دوباره 50 می‌کنه، در نتیجه مختصّات هیچ‌وقت کمتر از 50 نمی‌شه)، اگه هم Player.Y بیشتر از 300 بشه عدد 300 رو برگردون. در نتیجه مختصّات Y پلیر همیشه بین دو عدد 50 و 300 خواهد بود.

در سورس بالا به این شکل از تابع clamp استفاده کرده‌بودم که در هر تیک مختصّات Y اسپرایت به عبارت زیر تغییر می‌کرد:
کد:
clamp(Sprite.Y, Sprite2(0).Y + Sprite.Height/2, Sprite2(1).Y  - Sprite.Height/2)
همون طور که می‌بینید در این‌جا a و b و c در تابع clamp به این صورت هستند:
a = Sprite.Y
b = Sprite2(0).Y + Sprite.Height/2
c = Sprite2(1).Y - Sprite.Height/2
Sprite2(0).Y یعنی مختصّات Y اون اینستنسی از Sprite2 که IID اون برابر صفر هست (نماینده‌ی اونی که در بالا قرار داره).
بنابراین Sprite2(1).Y هم یعنی مختصّات Y اون اینستنسی از Sprite2 که IID اون برابر یک هست.
Sprite.Height یعنی اندازه‌ی ارتفاع Sprite به پیکسل، پس Sprite.Height/2 یعنی نصف ارتفاع Sprite یا بهتر بگم فاصله‌ی نقطه‌ی مبدأ (Origin) از بالای Sprite یا پایین Sprite (چون نقطه‌ی مبدأ در وسط قرار داره، هردوی این فاصله‌ها با هم برابرند).

همون طور که می‌دونید، محور Yها در کامپیوتر دقیقاً برعکس ریاضیه، یعنی از بالا به پایین مقدار Yها افزایش پیدا می‌کنه (تو ریاضی از پایین به بالا افزایش پیدا می‌کرد)، پس b در تابع clamp که عدد کوچکتر هست، نشون می‌ده شیء ما از کجا نباید بالاتر بره، و c که عدد بزرگتر هست نشون می‌ده شیء ما از کجا نباید پایین‌تر بره.

فکر کنم دیگه موضوع روشن شد، ولی اگه باز هم قسمتی رو متوجّه نشدید پرسید تا اون قسمتو توضیح بیشتری بدم.
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: wowxpria ، vng ، majid tarh ، GAME MOEIN ، ابوالفضل مرادی
#5
آقا مجتبی حالا می خوام یک شبیه ساز لیست اندروید بسازم که مثلا وقتی در حال درگ کردن هست اگر با قدرتی که به سمت بالا و پایین لمس می کنه لیست هم خودش حرکت کنه به اندازه قدرت لمس ما. مثلا من با سرعت زیادی از پایین صفحه به سمت بالا می کشم حالا می خوام خوده لیست بصورت خودکار به اندازه سرعت لمس به پایین حرکت کنه و عکس این عمل همانند یک گالری که وقتی از پایین به بالا لمس را می کیشم با سرعت درگ میشه به سمت پایین و برعکس حرکت میکنه.(تنها مشکل فعلی من)
این سورس را ببنید.
  پاسخ


 سپاس شده توسط: vng
#6
سلام، فکر کنم با استفاده از کاندیشن compare touch speed  بتونی اون چیزی که مدنظرت هستو بسازی.

یه رفتار هم هست دقیقا مثل همون اکسپرشن clamp که آقا مجتبی فرمودند.منتها خیلی راحتره فقط کافیه از  behaviors اون به شی مورد نظرت اختصاص بدی بعد از properties در راستای جهت های افقی و عمودی محدوده ی حرکت شی رو با 4 تا عدد مشخص کنی!

لینک دانلود 
--------------\\\\\\\\\\*******\\\\\\\\---------------------------\\\\\\\\\\**********\\\\\\\---------
[تصویر:  vngames_mobarez.png]


*«يَرْفَعِ اللَّهُ الَّذِينَ آمَنُوا مِنْكُمْ وَ الَّذِينَ أُوتُوا الْعِلْمَ دَرَجاتٍ//خداوند کسانی را که ایمان آورده اند و کسانی را که دانش به آنان عطا شده است.درجات عظیمی می بخشد.»(قرآن کریم، المجادلة، 11 ‏)*

*پیامبر اکرم (ص) فرمود:«علم آموزي بر هر مرد و زن مسلمان، واجب است.»(مصباح‏ الشريعة، ج 13)
  پاسخ


 سپاس شده توسط:
#7
ممنون ولی من هم از قبل چنین رفتار را داشتم ولی نتونستم باهاش کار کنم
  پاسخ


 سپاس شده توسط:
#8
سلام،دوست عزیز استفاده از این رفتار آسون تر از اونی که حتی تصورشو بکنی!میتونی با این رفتار

برای هر نوع حرکت، آبجکت ها و اشیای داخل بازیت منجمله حرکت درگ و دراپ مرز و محدوده تعیین کنی.

این مثال که برات ساختم نگاه کن:

لبنک دانلود

وقتی این رفتارو به یک آبجکت اضافه کردی توی properties اون آبجکت زیر behaviors یک گزینه اضافه

میشه به اسم boundary(به معنای :کرانه،مرز)--تنظیم گزینه هاش به این صورت که modرو

باید بزاری روی حالت clamp--- (رو حالت wrap که باشه به محض رسیدن شی به محدوده ی

تعیین شده، مرزو کامل رد میکنه دوباره برمیگرده به داخل محدوده تعیین شده ولی تو حالت clamp

دقیقا در محدوده تعیین شده متوقف میشه و از مرز عبور نخواهد کرد)

align میتونی بزاری روی boundaries تا شی ما در مرز اطراف خودش به محض

رسیدن به محدوده تعیین شده متوقف بشه اگه بزاری روی حالت orgin شی ما پس از رسیدن به

محدوده ی تعیین شده توی ایمیج پوینت مرکزی(محور چرخش اولیه خودش) متوقف میشه.

horizontal یا محور افقی در واقع همون محور x ماست! باید روی yes تنظیم کنی تا فعال

بشه، left هم x1 (مختصات افقی اولیه)هست  و right میشه x2 (مختصات افقی ثانویه)
باید بهشون عدد و مختصات بدی تا مرز توقف حرکت شی در محور x تعیین بشه
مختصاتشم دقیقا مثل مختصات لیوت هست یعنی از سمت چپ و عدد 0شروع میشه تا ....توی مثال اون

دوتا باکس قرمز در سمت چپ و راست شی دارای رفتار مرز (سبز رنگ)قرار دادم اگه به x

position شون نگاه کنی میبینی که مختصاتشون همون مرز left  یا x1 و right  یا

x2 تعیین شده برای شی اصلی(سبز رنگ) هست.اینطوری خیلی راحت میتونی مرز دلخواهتو بدست

بیاری! بعد میتونی ابن باکسهای اضافی پاک کنی   
 
 vertical هم همون محور عمودی یا y است.باید برای فعال شدن yes رو بزنی .
 top هم میشه y1 و bottom هم میشه y2 دقیقا به مانند horizontal هست فقط

ایندفعه بجای چپ و راست،از بالا و پائین مرز رو تعیین میکنه !
 
باکس های آبی در مثال رو هم با مختصات مرز vertical عمودی یکی گذاشتم تا متوجه بشی

مختصات تعیین مرز فرقی با مختصات اشیای دیگر در لیوت نداره.

راستی یه چیز دیگه تا یادم نرفته اینکه رفتار مرز یا boundaries از داخل ایونت ها هم قابل

کنترل هست.مثلا میتونی در رویداد یا زمانی خاصی فعال و غیر فعالش کنی یا مختصات مرز و محدوده

رو در هنگام یک  رویداد خاص یا یک زمان خاص تعیین کنی یا مختصات مرز شی دارای رفتارو با

مختصات xy اشیا دیگه در رویدادی خاص یا زمانی خاص یکسان قرار بدی..خودت یکم کار کنی متوجه

میشی
--------------\\\\\\\\\\*******\\\\\\\\---------------------------\\\\\\\\\\**********\\\\\\\---------
[تصویر:  vngames_mobarez.png]


*«يَرْفَعِ اللَّهُ الَّذِينَ آمَنُوا مِنْكُمْ وَ الَّذِينَ أُوتُوا الْعِلْمَ دَرَجاتٍ//خداوند کسانی را که ایمان آورده اند و کسانی را که دانش به آنان عطا شده است.درجات عظیمی می بخشد.»(قرآن کریم، المجادلة، 11 ‏)*

*پیامبر اکرم (ص) فرمود:«علم آموزي بر هر مرد و زن مسلمان، واجب است.»(مصباح‏ الشريعة، ج 13)
  پاسخ


 سپاس شده توسط: [M.H.P] ، wowxpria ، mahdiirani ، shazde ، amirho24
#9
(1393/11/28، 01:00 عصر)wowxpria نوشته است: آقا مجتبی حالا می خوام یک شبیه ساز لیست اندروید بسازم که مثلا وقتی در حال درگ کردن هست اگر با قدرتی که به سمت بالا و پایین لمس می کنه لیست هم خودش حرکت کنه به اندازه قدرت لمس ما. مثلا من با سرعت زیادی از پایین صفحه به سمت بالا می کشم حالا می خوام خوده لیست بصورت خودکار به اندازه سرعت لمس به پایین حرکت کنه و عکس این عمل همانند یک گالری که وقتی از پایین به بالا لمس را می کیشم با سرعت درگ میشه به سمت پایین و برعکس حرکت میکنه.(تنها مشکل فعلی من)
این سورس را ببنید.

سلام دوستان سوال من هم همین است کسی میتونه سورس این رو درست کنه
اين همه لاف زن و مدعي اهل ظهور
پس چرا يار نيامد که نثارش باشيم
سالها منتظر سيصدو اندي مرد است
آنقدر مرد نبوديم که يارش باشيم
اگر آمد خبر رفتن ما را بدهيد
به گمانم که بنا نيست کنارش باشيم
آیت الله بهجت(ره)
  پاسخ


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


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  حل شده ارور جاوا M.gh 4 1,867 1403/6/27، 10:19 عصر
آخرین ارسال: Klkj
  این چیه alirezagamemaker 4 2,327 1403/6/27، 10:18 عصر
آخرین ارسال: Klkj
  نشان دادن حرف در بازی کلماتی mehdi 0 287 1403/5/13، 05:27 عصر
آخرین ارسال: mehdi
  حل شده مشکل در آرایه mehdi 2 557 1403/4/26، 11:41 عصر
آخرین ارسال: mehdi
  حل شده خرید درون برنامه مایکت در وب ویو Arianm 3 1,296 1402/4/25، 12:01 عصر
آخرین ارسال: Arianm

پرش به انجمن: