আমি কীভাবে সংঘর্ষ সনাক্তকরণ পরিচালনা করব যাতে দ্রুত বস্তুগুলিকে দেয়াল দিয়ে যাওয়ার অনুমতি দেওয়া হয় না?


14

আমি একটি 2 ডি পার্শ্বক্রোলিং শ্যুটার তৈরি করছি, এবং বুলেটগুলির সংঘর্ষ সনাক্তকরণে আমার একটু সমস্যা হচ্ছে। বুলেট সহ সমস্ত কিছু তাদের নিজস্ব বহুভুজ / আপডেটের পদ্ধতিগুলির সাথে অবজেক্ট are

সমস্যাটি হ'ল বুলেটগুলি দ্রুত চলে যায় এবং প্রতি সেকেন্ডে 60 ফ্রেমে (খেলাটি কী চালায়) একটি বুলেট প্রায়শই একটি প্রাচীরের মধ্য দিয়ে চলে যায় - যেহেতু এটি আপডেটের ব্যবধানে প্রাচীরের প্রস্থের চেয়ে বেশি সরে যায় - এবং বহুভুজ আসলে কখনই ওভারল্যাপ হবে না সেহেতু আনন্দের সাথে চালিয়ে যান।

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


পুরো উত্তর নয়, তাই একটি মন্তব্য। আমি কখনও গ্রাফিকভাবে কোনও লাইন আঁকার সুপারিশ করব না তবে গাণিতিকভাবে আপনি এটি করতে পারেন, এটি সংঘর্ষ হয়েছে কিনা তা দেখার জন্য এটি কেবল একটি সহজ রে-প্লেন ছেদ inters উত্তরের মুহূর্তে প্রস্তাবিত হিসাবে ক্রমাগত উচ্চ হারে দৌড়াদৌড়ি সহ যখন সংঘর্ষটি ঘটেছিল তখন সঠিক মুহুর্তটি (এবং এর সাথে আগত সমস্ত তথ্য) পেতে আপনি একটি ছোট স্থির পদক্ষেপ সনাক্ত করতে পারেন। কম ব্যয়বহুল চেক করুন এবং তারপরে আপনার প্রয়োজন মতো যথাযথ উত্তর পেতে সময় ব্যয় করুন।
জেমস

উত্তর:


9

মানক পদ্ধতিগুলি হল (একটি বাছাই করুন):

  1. আপনার সীমানা প্রস্থ বৃদ্ধি করুন এবং / অথবা আপনার বুলেটের সর্বোচ্চ গতি হ্রাস করুন যাতে এটি কোনও একক আপডেটে কোনও দেয়ালের মধ্যে দিয়ে কখনও লাফিয়ে না আসতে পারে (সর্বোচ্চ দূরত্ব / ন্যূনতম সীমানা প্রস্থের চিত্র বের করার জন্য পাইথাগোরাসকে কিছুটা প্রয়োজন হয়);
  2. চলমান বস্তুর সামনে লিনিয়ার (2) বা প্ল্যানার (3 ডি) পৃষ্ঠগুলির সাথে সংঘর্ষ সনাক্ত করতে সাধারণত রেইস্টক দ্বারা অবিচ্ছিন্ন সংঘর্ষ সনাক্তকরণ (সিসিডি) সঞ্চালন করুন। এটি আরও ব্যয়বহুল, তবে এটি আরও সু-গোলাকার সমাধান। 2 ডি লাইনের বিপরীতে রাইস্টাস্টিং বেশ বেসিক, তবে আপনাকে এই ক্ষেত্রে আপনার সমস্ত সীমানা সরল-প্রান্তের বহুভুজ হিসাবে সংজ্ঞায়িত করতে হবে।

এই বিষয়টির জন্য, আপনি তার পরিবর্তে আপনার বুলেটগুলিকে রশ্মির মতো মডেল করতে পারেন - যদি এটি আপনার গেমটির চেহারা ও বোধের সাথে খাপ খায় , যেমন বাম 4 কেডিএড । এইভাবে আপনাকে রে হিসাবে আনুমানিক বুলেটগুলি লাগবে না, কারণ তারা ইতিমধ্যে রশ্মি। চেহারার দৃষ্টিকোণ থেকে, আপনি বুলেট প্রান্তে একটি উজ্জ্বল স্পট দিয়ে রেখাটি আঁকলে বা হালকা (বুলেট প্রান্ত) থেকে অন্ধকার (পুচ্ছ প্রান্ত) পর্যন্ত গ্রেডিয়েন্ট হিসাবে লাইনটি আঁকলে এটি দেখতে সুন্দর দেখাবে can গতি।

আমি সম্মত হব যে বেশিরভাগ পরিস্থিতিতে সংঘর্ষ সনাক্তকরণের জন্য গ্রাফিক্স ব্যবহার করা কিছুটা বিভ্রান্তিকর, তবে পিক্সেল-নিখুঁত সংঘর্ষ সনাক্তকরণটি ঠিক এটি এবং এটি একটি স্বীকৃত কৌশল। আমি অনুমান করি যে এটি আপনি কী অর্জন করতে চান এবং কতটা দ্রুত তার উপর নির্ভর করে। আপনার যদি অনেক বডি + অ্যাকশন সহ খুব দ্রুত গেমের প্রয়োজন না হয় তবে এর জন্য যান। আমি উপরে বর্ণিত পদ্ধতির একটি ব্যবহার করা অন্যথায় ভাল।


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

3
এটি বুলেটগুলির জন্য খুব বেশি বিশদ বলে মনে হচ্ছে। বাস্তব জীবনে, আপনি যখন একটি গুলি চালান, আপনি রিখোশেটের বল, রিম্বোচেটের কোণের অনির্দেশ্যতা ইত্যাদির কারণে এই স্লাগটি খুঁজে পাওয়ার সম্ভাবনা কম Or আমি কেবল তাদের নিখোঁজ বা রিোকোশেট করতে এবং তারপরে খুব শীঘ্রই নিখোঁজ করতে চাই। আপনার মূল গেমপ্লেতে ফোকাস করুন, এই ছোট বিবরণ সম্পর্কে খুব বেশি চিন্তা করবেন না। বাস্তবতাকে গুরুত্বপূর্ণ বিষয়গুলিতে সবচেয়ে ভাল ফোকাস করা হয়।
ইঞ্জিনিয়ার

হ্যাঁ, আমি মনে করি আমি বুলেটগুলির জন্য কেবল সরল রেখা ব্যবহার করতে পারি এবং এটি গুরুত্বপূর্ণ মনে হলে কিছুটা পরে নীচের দিকে বক্র করার জন্য একটি উপায় খুঁজে পেতে পারি।
মালা

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

3

আপনি যদি নিজের বুলেটগুলি বাস্তববাদী শারীরিক বস্তুর মতো আচরণ করতে চান (যেমন আপনার বুলেটগুলি বন্দুক-আগুনের চেয়ে ক্যাপাল্টের তীর বা পাথরের মতো), তবে আপনি নিজের পদার্থবিজ্ঞানের আপডেটগুলির ফ্রিকোয়েন্সি বাড়ানোর চেষ্টাও করতে পারেন।

সুতরাং আপনার গেমটি প্রতি সেকেন্ডে 60 ফ্রেম দিয়ে চলতে পারে, আপনার শারীরিক-সিমুলেশনটি প্রতি সেকেন্ডে 120 টি আপডেটে চলতে পারে (এখানে সর্বব্যাপী আপনার টাইমস্টেপ নিবন্ধটি একটি ভাল পদার্থবিজ্ঞানের সেটআপ ব্যাখ্যা করে যা রেন্ডার-লুপের চেয়ে আলাদা গতিতে চলতে পারে)।

অবশ্যই, পদার্থবিজ্ঞান-ইঞ্জিনে আপডেট-ব্যবধান বাড়ানো সিপিইউতে একটি বড় বোঝা চাপবে। সুতরাং এই প্রবর্তনটি কেবল তখনই বোধগম্য যদি আপনার প্রজেক্টিকেলগুলি খুব দ্রুত চলমান না হয় (যা আমি ধরে নিছিলাম যেহেতু আপনি বলতে পেরেছেন যে আপনার প্রজেক্টিলগুলি তোরণে চলছে)।


ধন্যবাদ! আমি কার্যকরভাবে এটি করছি (পাশাপাশি লাইন-আকৃতির প্রজেক্টেলগুলি ব্যবহার করছি) এবং আশা করছি গেমটি আরও জটিল হয়ে যাওয়ায় এটি সম্ভবপর থাকবে
মালা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.