আইসোমেট্রিক সংঘর্ষ সনাক্তকরণ


11

দুটি আইসোমেট্রিক টাইলের সংঘর্ষ সনাক্ত করার চেষ্টা করার সাথে আমার কিছু সমস্যা হচ্ছে।

আমি টাইলের প্রতিটি পয়েন্টের মধ্যে লাইনগুলি প্লট করার চেষ্টা করেছি এবং তারপরে লাইন ইন্টারসেপ্টগুলির জন্য পরীক্ষা করেছি তবে এটি কার্যকর হয়নি (সম্ভবত ভুল সূত্রের কারণে)

আজ এটিকে কিছুক্ষণ দেখার পরে আমি বিশ্বাস করি যে আমি এটি সম্পর্কে অনেক চিন্তাভাবনা করছি এবং অবশ্যই একটি সহজ উপায় থাকতে হবে।

আমি কোডটির সন্ধান করছি না ওভারল্যাপ সনাক্তকরণের সর্বোত্তম উপায়ে কেবল কিছু পরামর্শ


4
আপনি ঠিক কি করতে চেষ্টা করছেন? মাউস যখন টাইলের উপরে চলে গেছে তা সনাক্ত করুন, বা দুটি ইউনিট ওভারল্যাপ করছে কিনা তা সনাক্ত করুন? যদি এটি পরে হয় তবে আপনার "গেম" কে "গ্রাফিক্স" থেকে আলাদা করার বিষয়ে আপনার সত্যিই চিন্তা করা উচিত
জন ম্যাকডোনাল্ড

যখন চলন্ত আইসো-টাইলের দিকটি চলন্ত টাইলটি থামে না তখন চলন্ত টাইল বন্ধ হয়ে যায় I আমি কেবল যে জিনিসটির সাথে সমস্যায় পড়ছি তা হ'ল সংঘর্ষের পরীক্ষা। আমি একটি আবদ্ধ বাক্স ব্যবহার করতে পারি তবে সংঘাতের সঠিক হওয়া আমার দরকার।
ক্রিস ক্রু

উত্তর:


23

আমি সরাসরি বেরিয়ে এসে বলব যে আপনি যে প্রশ্নটিতে বর্ণিত সমস্যাটি কীভাবে সমাধান করবেন তা আমি জানি না (আইসো-টাইল-আকৃতির আয়তক্ষেত্রগুলির মধ্যে সংঘর্ষ সনাক্তকরণ), তবে আমি আপনাকে বলতে পারি যে অন্যরা কীভাবে এটি সমাধান করেছে :

অন্যান্য গেমগুলিতে এটি যেভাবে করা হয়েছে তা হ'ল গেম জগতকে পর্দার জগত থেকে আলাদা করা । যখন আপনি শুরু করছেন, তখন এগুলি একই জিনিস তা কল্পনা করা সাধারণ, তবে এরপরে এটি আপনি বর্ণনা করছেন এমন সমস্যার সৃষ্টি করে।

সাধারণ ধারণাটি হ'ল গেম ওয়ার্ল্ড পুরোপুরি মেমরির মধ্যে সংরক্ষণ করা হয়, পর্দার আড়ালে, এটি কেবল সংখ্যা, উল্লেখ এবং যুক্তি। আইসোমেট্রিকে আপনি গেমের জগতকে আঁকছেন এ বিষয়টি অপ্রাসঙ্গিক। আপনার গেমের জগতের আইসোমেট্রিক বা বর্গক্ষেত্রের ধারণা থাকা উচিত নয়, এমনকি স্ক্রিনটি 3 ডি হিসাবে আঁকলেও হওয়া উচিত। আপনি যখন গেমের জগতকে পর্দার দিকে টানেন (তখন স্ক্রিন ওয়ার্ল্ড ) তখন তার সবকিছুর যত্ন নেওয়া হয় । আইসোমেট্রিক গেমগুলিতে গেমের জগতটি সহজতম উপায়ে সংরক্ষণ করা এবং বজায় রাখা উচিত, আপনি সাধারণত এটি পুরোপুরি সত্যই উপেক্ষা করেন এবং পরিবর্তে অবস্থানগুলি সংরক্ষণ করুন যেন আপনি অক্ষ-সারিবদ্ধ গ্রিড ব্যবহার করছেন। বেশিরভাগ গেমের দুটি বিশ্বের মধ্যে সমন্বয় রূপান্তর করার জন্য পদ্ধতি থাকবে, আমি আমার ScreenToWorld(x, y)এবং ডাকেWorldToScreen(x, y)। রূপান্তরটি প্রায়শই ম্যাট্রিক্স গণিতের সাথে করা হয় তবে অন্য উপায়ে অর্জন করা যায়। আপনি যখন মাউস ব্যবহার করবেন তখন আপনি স্ক্রিনটি ওয়ার্ল্ড এবং ওয়ার্ল্ড টোস্ক্রিন ব্যবহার করবেন।

গেম ওয়ার্ল্ড এবং স্ক্রিন ওয়ার্ল্ডকে বিভক্ত করার বিভিন্ন সুবিধা রয়েছে । সুবিধাগুলির মধ্যে একটি হ'ল সংঘর্ষ সনাক্তকরণ এবং চলাচল সবই গেমের জগতে ঘটে থাকে এবং তাই সাধারণত বেশ সোজা হয়ে থাকে কারণ আপনি কোনও স্ল্যাড গ্রিড, বা স্কিওড কোঅর্ডিনেটস, বা স্ক্রিন যেখানে নেই ইত্যাদি নিয়ে কাজ করছেন না your , আপনি অক্ষ-সংযুক্ত আয়তক্ষেত্র এবং স্কোয়ারগুলি নিয়ে কাজ করবেন। একবার গেম ওয়ার্ল্ড আপডেট হয়ে গেছে, তারপরে আপনি গেম ওয়ার্ল্ডের একটি চিত্র স্ক্রিনে আঁকুন, কীওয়ার্ড: প্রতিনিধিত্ব করুন। এটি প্রথমে স্ব-স্বজ্ঞাত বলে মনে হতে পারে তবে আপনার পর্দাটি গেমের বিশ্বে কী চলছে তার একটি প্রতিনিধিত্ব। এটি ডেডিকেটেড সার্ভার এবং টার্মিনালের মতো ক্লায়েন্টগুলির মতো জিনিসকে সম্ভব করে তোলে।

ফ্রিসিভ আসলে এই সমস্ত কিছুর একটি দুর্দান্ত উদাহরণ। আপনি যে কোনওটির মতো একই বিশ্বকে দেখতে পারেন: একটি বর্গ উত্তর / দক্ষিণ গ্রিড, আইসোমেট্রিক বা এমনকি হেক্স। আপনার চালানো প্রতিটি গেমের পটভূমিতে একটি ডেডিকেটেড সার্ভার চলছে, এমনকি একক প্লেয়ার গেমসের জন্যও তাই ক্লায়েন্টটি কেবল একটি প্রদর্শন পোর্ট, আরও কিছু নয়।

দীর্ঘ গল্পের সংক্ষিপ্তসার: গেমের জগতটি এবং পর্দার জগত থেকে যুক্তিকে পৃথক করা গেমটির যুক্তিকে সহজ করে তোলে , গেম <-> প্রদর্শন সংযোগকে হ্রাস করে এবং ফলস্বরূপ , "আইসো" টাইলগুলির মধ্যে সংঘর্ষ সনাক্তকরণকে পরিচালনা করা সহজ এবং দৃশ্যমান করা সহজ করে তোলে।


সুস্পষ্টভাবে উত্তরের জন্য ধন্যবাদ আমি যুক্তিটি কীভাবে আঁকানো হয়েছে এবং পটভূমিতে কী ঘটছে তা আলাদা করে দিচ্ছিলাম তবে আমি সবকিছুকে একটি স্লেন্ট গ্রিড হিসাবে বিবেচনা করছি।
ক্রিস ক্রু

1
ভবিষ্যতের মানুষের জন্য; গ্রাফিক্স ডেটা ব্যাখ্যা। একটি গেমের চারটি প্রধান টুকরো: যুক্তি, ডেটা, ইনপুট, আউটপুট। তাদের একসাথে পিণ্ড করা এড়ানো। এছাড়াও, দুর্দান্ত প্রতিক্রিয়া জন, +1
অ্যারোয়াইম

9

জন এর উত্তর বেশ সঠিক, কিন্তু আমি এটি অন্যভাবে ব্যাখ্যা করার চেষ্টা করব:

কোনও আইসোমেট্রিক সংঘর্ষ সনাক্তকরণ নেই।

সংঘটন সনাক্তকরণ আপনার প্রজেকশন ম্যাট্রিক্স / রূপান্তরটি দেখতে কেমন তা বিবেচনা করে না। আপনি যদি জিনিসগুলি একেবারে রেন্ডার করেন তবে সংঘর্ষ শনাক্তকরণের বিষয়টি বিবেচনা করা উচিত নয় (সর্বোপরি, পর্দার বাইরে থাকা অবজেক্টগুলি এখনও সংঘর্ষ করতে পারে, তাই না?)

এটি আরও দার্শনিক প্রশ্ন: বনের মধ্যে পড়ে কোন গাছ কি আসলেই মাটির সাথে সংঘর্ষে পড়ে যখন সেখানে কেউ নেই?

প্রচলিত জ্ঞান বলতে হবে: হ্যাঁ। আপনি কীভাবে এটি তাকান তা বিবেচ্য নয়। জিনিসগুলি স্থান-স্থানগুলিতে সংঘর্ষিত হয়, দর্শন স্থান নয়।


2
+1 ভাল করা। "কোনও আইসোমেট্রিক সংঘর্ষ সনাক্তকরণ নেই"
জন ম্যাকডোনাল্ড

1
ধন্যবাদ, আপনি ইতিমধ্যে যা বলেছিলেন তা আমি কেবল বলেছি। তবে কিছুটা আলাদা।
মার্কআর

0

আপনি প্রতিটি পৃথক পিক্সেলের প্রতিটি getRGB () মানগুলির একটি বিটম্যাপ রচনা করে পিক্সেলের একটি অ্যারে বরাদ্দ করার চেষ্টা করতে পারেন। টাইলের সীমানাগুলি টাইলটি যেভাবে প্রতিনিধিত্ব করে (জল, বালি, ঘাস) তার চেয়ে আলাদা রঙের মান হিসাবে একটি স্টেট স্টেটমেন্টের সাথে মানগুলির তুলনা করুন। এটি একটি বেসিক আইসোমেট্রিক গ্রিডের জন্য। অথবা আপনার নিজের মানচিত্রের দুটি স্তর থাকতে পারে। সবুজ পর্দার মতো ধরণের একটি স্তর কোনও সংঘর্ষক বস্তুর প্রতিটি প্রতিনিধির বাহ্যরেখা অঙ্কন করে এবং অন্য স্তরটি নিজেই মানচিত্র হবে।

আপনি মানচিত্রের প্রতিটি পিক্সেলের বিটম্যাপ অ্যারে রচনা করছেন না এর পরিবর্তে আপনি কোনও রঙের মান রক্ষণাবেক্ষণের রঙের মান সীমানা সংঘর্ষ / ছেদ করলে এর প্রভাবগুলির প্রতিনিধিত্ব করে এমন রঙের একটি সেট গণনা করতে চান। হয় আপনি মানগুলি হ্রাস করতে চান বা গতিবেগ বৃদ্ধি করতে চান যাতে বস্তুটি চলমান। সরানো প্রতিটি বস্তু হ'ল কেবল একটি ভিন্ন জায়গায় সঞ্চিত মেমরির একটি সদৃশ।

আমি পিক্সেল নিখুঁত সংঘর্ষ এবং বিটম্যাপ অ্যারের বোঝার দিকে নজর দেব। প্রতিটি আয়তক্ষেত্র হ'ল প্রতিলিপিযুক্ত ডাটা সাজানোর সীমানা যা প্রতিটি ইভেন্টে কোনও অবস্থান বা ভেক্টরটিতে রেন্ডার করা হয় তার উপর নির্ভর করে প্রতিটি ইভেন্ট ট্রিগার করা হয় imp পর্দার প্রতিটি পয়েন্ট কেবল 2 ডি প্লেনে থাকে যে ছায়ার গভীরতা এমন একটি মায়া দেয় যা বস্তু নিজেকে 3 ডি হিসাবে উপস্থাপন করে। একটি স্কুতে আকারের রূপান্তরটি বোঝায় যে বস্তুটি একটি কোণে রয়েছে। একটি কেন্দ্রবিন্দু রয়েছে যেখানে ক্যামেরা এটি উপস্থাপন করে যা সবকিছু এই কেন্দ্রবিন্দুটির চারপাশে বহন করা হয় যা আকার থেকে কমতে বা আকারে বাড়ার সাথে এটির কাছাকাছি চলেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.