PDA

View Full Version : برخورد دو شی در سی شارپ



amirerafnirani
جمعه 22 تیر 1397, 19:39 عصر
سلام دوستان ی سوال

برای شرط دادن به دو شی مثلا دکمه(button) که وقتی یکی به اون یکی برخورد کرد چه شرطی میتونم براش بنوسم...شرط برخورد کردنشون چیه؟؟؟؟
مثل بازی مار

رامین مرادی
شنبه 23 تیر 1397, 08:19 صبح
سلام دوستان ی سوال

برای شرط دادن به دو شی مثلا دکمه(button) که وقتی یکی به اون یکی برخورد کرد چه شرطی میتونم براش بنوسم...شرط برخورد کردنشون چیه؟؟؟؟
مثل بازی مار

دقیق متوجه سوالتون نشدم. ولی خب باید فاصله ها و ارتفاع دوتا رو باهم مقایسه کنید. وقتی Top هر دو یکی بود و ,وقتی Left+Width یکی برابر left یکی دیگه بود اونموقع برخورد صورت گرفته.باید در همه وضعیت ها اینو چک کنید.
یا اینکه صفحتون رو یه آرایه درنظر بگیرید و هر باتون رو تو یه خونه قرار بدید فرضا. هر موقع هنگام حرکت هر دو تو یه آرایه بودن اونموقع برخورد صورت گرفته. تو هر حرکت هم وضعیت قرار گیری باتن در آرایه رو اصلاح کنید.

mr.sirwan
شنبه 23 تیر 1397, 16:17 عصر
این مسئله اگر برای مبحث بازی سازیه راهکاری که به ذهن بنده میرسه اینه که خب شما اشیائتون در حال حرکت هستند دیگه درسته؟ هر وقت شی حرکتی انجام داد شما باید همون لحظه چک کنین که ایا این شی با شی یا جسم دیگه ای برخورد داشته یا خیر، برای واضحتر شدن فرض کنین یه فضای ماتریسی به اندازه 1920 در 1080 دارین که کل عناصر ماتریس صفره، چارچوب صفحه رو با پهنای یک سطر و ستون در نظر بگیرین که مقدار یک دارن، حالا شما توی این صفحه دوتا شی دارین یه شی توپ که با مقدار دو توی ماتریس مشخص میشه و یه شی آتیش دارین که با مقدار سه در ماتریسمون مشخص میشه
وقتی شی توپ داره حرکت میکنه، خب اینجا مقادیر ماتریسمونن که دارن تغییر میکنن درسته؟ مثلا توپ یه پیکسل به سمت راست حرکت میکنه، پس باید عناصر با مقدار 2 رو یک ستون به سمت راست شیفت بدین، شرط برخورد هم باید با هر بار حرکت توپ بررسی کنین
فرضا توپ حال حاضر در موقعیت سطری 1000 و موقعیت ستونی 1000 (شما میتونی گوشه صفر صفر توپ رو محور قرار بدی یا دقیقا وسط توپ رو، اختیار با خودته) قرار داره با قطر 10 پیکسل یعنی توپ 10 سطر و 10 ستون رو از ماتریس اشغال میکنه، حالا توپ یه پیکسل به سمت راست حرکت میکنه شما اول میای کل 10 سطر و ستون توپ رو یه ستون به سمت راست شیفت میدی و حالا چگ میکنی که در موقعیت ستونی 1011 ماتریس (سطر هم باید درنظر بگیری) آتیش وجود داره یا خیر؟ اگر اتیش وجود داشت خب برخورد صورت گرفته و بازی تموم میشه

حالا این چیزی که من توضیح دادم زمانیه که شما بخوای خودت یه بازی رو بدون موتور بازی سازی بسازی، که باید از دنیای ماتریس و ارایه ها استفاده کنی، اما الان موتورهای بازی سازی (مثل unity) خودشون این مسئله ها رو کنترل میکنن و هر موقع برخوردی صورت گرفت به برنامه اطلاع میدن که چه شیئی با چه شی دیگه ای برخورد داشته و شما طبق اون کد میزنین

danialafshari
یک شنبه 24 تیر 1397, 01:00 صبح
با سلام
بهتره برای اینکار از XNA Game Studio که آخرین ورژنش 4 هست و به ویژوال استودیو افزوده میشه استفاده کنید