আমি কীভাবে খেলোয়াড়কে 2 ডি প্ল্যাটফর্মারে পিষ্ট হয়ে পড়তে পারি?


19

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

নিম্নলিখিত চিত্রগুলিতে হালকা নীল বাক্সটি ভূমির প্রতিনিধিত্ব করে, কমলা বাক্স একটি বস্তু এবং তীরগুলি গতিপথের দিক নির্দেশ করে।

খেলোয়াড় যখন পিষ্ট হয় তখন সনাক্তকরণের সহজ সমাধানটি হ'ল বিপরীত দিকের সংঘর্ষের পয়েন্টগুলি উভয়ই ট্রিগার করে কিনা তা দেখা। যদি তারা হয় তবে প্লেয়ারকে পিষ্ট করা হচ্ছে। # 2 এ, আপনি একটি সাধারণ ক্রাশের দৃশ্য দেখতে পারেন। প্লেয়ার গ্রাউন্ডেড এবং শীর্ষ সংঘর্ষ পয়েন্টগুলি পড়ন্ত বস্তুর সাথে ছেদ করছে। এটি একটি ক্রাশ ট্রিগার করে।

# 3, 4 এবং 5 বর্তমান সমস্যাযুক্ত পরিস্থিতি। # 3 এ, প্লেয়ারটি অবজেক্টের দিকে যাচ্ছে, যা উপরে চলেছে moving ডান দিকের সংঘর্ষ পয়েন্টটি বস্তুকে আঘাত করছে, সংঘর্ষ ঘটায় এবং প্লেয়ারকে থামিয়ে দিচ্ছে।

এখন, যদি বস্তুটি উপরে চলে যেতে থাকে এবং প্লেয়ারটি ডান দিকে অগ্রসর হতে থাকে (# 4 তে দেখানো হয়েছে), বস্তুটি খেলোয়াড়দের ডানদিকের সংঘর্ষের স্থানটি সাফ করে দেয় এবং প্লেয়ারটি ডানে চলে যায়। কিন্তু এখন, এটি করার পরে, অবজেক্টটি একটি শীর্ষ সংঘর্ষ পয়েন্ট ছেদ করছে একটি অযাচিত উল্লম্ব ক্রাশের কারণ।

অনুরূপ দৃশ্য # 5 এ দেখানো হয়েছে। নীচের সংঘর্ষের পয়েন্টগুলি পরিষ্কার করার জন্য দুটি বস্তু যথেষ্ট দূরে রয়েছে, প্লেয়ারকে পড়তে দেয়, তবে পার্শ্বের সংঘর্ষের পয়েন্টগুলি সাফ করার অনুমতি দেয় না, ফলে একটি অবাঞ্ছিত অনুভূমিক ক্রাশ ঘটে।

আমি আমার মস্তিষ্ককে সমাধানের দিকে নিয়ে যাচ্ছি, তবে আমি যে কিছুই নিয়ে এসেছি তা খুব ভালভাবে কাজ করে নি, তাই আমি ভাবছি যে এই সমস্যাগুলি কীভাবে সমাধান করবেন সে সম্পর্কে কারও ধারণা বা অন্তর্দৃষ্টি আছে কিনা wond

এখানে চিত্র বর্ণনা লিখুন

কিছু বিভ্রান্তি দূর করার জন্য, লাল সংঘর্ষ পয়েন্টগুলি স্প্রাইটের মধ্যে থাকবে এবং ধূসর রেখাগুলি কেবল প্রতিটি সংঘর্ষের জন্য সম্পর্কিত অক্ষটি বোঝাতে ব্যবহৃত হত। উদাহরণস্বরূপ, যদি চরিত্রের স্প্রিটটি একটি সাধারণ সবুজ বর্গক্ষেত্র ছিল, সংঘর্ষের পয়েন্টগুলি দেখতে এরকম কিছু দেখবে:

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


34

আমি মনে করি আপনাকে বাক্সের চলাচলকে বিবেচনায় নিতে হবে। অর্থাৎ, বক্সটি প্লেয়ারের দিকে এগিয়ে গেলে কেবল ক্রাশ করুন।

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

সুতরাং একটি ব্লক প্লেয়ারকে উপর থেকে কেবলই চাপতে পারে যদি ব্লকটি নীচের দিকে চলে যায়; নীচে থেকে কেবল যদি ব্লকটি উপরের দিকে অগ্রসর হয়; বাম দিক থেকে কেবল যদি ব্লকটি ডানদিকে চলেছে, এবং আরও অনেক কিছু।


13
+1 বিবেচনা করুন যে ব্লকটি এখানে অভিনয় করছে, প্লেয়ার নয়। সুতরাং যদি আপনি পরীক্ষা করে থাকেন যে বক্সটি খেলোয়াড়কে পিষ্ট হচ্ছে কিনা তা পরীক্ষা না করে প্লেয়ারকে পিষ্ট করছে কিনা তা সমাধান করা আরও সহজ হওয়া উচিত
নীলস

ব্লকগুলি যখন চলমান না তখন কী হবে? আমি বুঝতে পেরেছি যে আমি # 5 এ ব্লকগুলিতে তীর রেখেছি, তবে এটি বোঝানো হয়েছে দুটি স্থায়ী ব্লক।
ইয়ানলারসন

আপনি যদি স্থির করেন যে স্থিতিশীল ব্লকগুলি ক্রাশ না করা উচিত, কেবলমাত্র নিশ্চিত হয়ে নিন যে প্লেয়ারটি আটকেছে না এবং উপায় থেকে সরে যেতে পারে।
কংগ্রেসবঙ্গাস

হ্যাঁ, আমি দুটি বস্তু দ্বারা প্রকৃতপক্ষে একে অপরের থেকে দূরে সরে যাওয়া ঘৃণা করি , কেবলমাত্র আমি এটিকে পিক্সেল এবং ফ্রেম-নিখুঁত করেছিলাম এবং বিকাশকারী অলস ছিল।
গন্ডার

9

আপনার চিত্র # 1-তে দেখানো ধূসর বাক্সের ভিতরে "ক্রাশ টেস্ট" পয়েন্টগুলি থাকুন - অর্থাত্ যদি আপনি সেখানে পিক্সেলের কোনওটিতে হিট সনাক্ত করেন তবে প্লেয়ারটিকে হত্যা করুন।


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

6

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

এটি মনে রেখে, অনুভূমিক এবং উল্লম্ব সংঘর্ষের জন্য পৃথক পয়েন্ট থাকার ধারণাটি কেবল উড়ে যায় না। সুতরাং আপনার কেস 3 এবং 5 এর অস্তিত্ব নেই।

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

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


3
মাইনর পয়েন্ট - আপনি জানেন না যে তাঁর স্প্রাইটটি কেমন দেখাচ্ছে। আমরা সকলেই জানি এটি উপরের চিত্রগুলিতে যেমন দেখানো হয়েছে ঠিক তেমনই হতে পারে, তাই 3 এবং 5 এর ক্ষেত্রে সম্পূর্ণ বৈধতা থাকতে পারে।
অ্যালেক্স

1
অ্যালেক্স ঠিক আছে। আমি স্পষ্ট করতে একটি সম্পাদনা করেছি। আমি সম্মত হই যে অসংগতিপূর্ণ সংঘর্ষের বাক্সগুলির চেয়ে খারাপ আর কিছু নেই। আমি মনে করি আমি বিভিন্ন অক্ষের জন্য পৃথক পয়েন্ট ব্যবহার না করার বিষয়ে আপনার বক্তব্যটি বুঝতে পারি। যদি আমি এটি করি, এটি উপরের উদাহরণটি আটটি পয়েন্ট থেকে চারে পরিণত হবে, প্রতিটি কোণায় একটি করে, সঠিক? আমি এটি মাথায় রেখেই কিছু পরীক্ষা করেছি (পছন্দসই ফলাফলের তুলনায় কম) তবে আমি করণে দৃ separated় দ্বিধা বোধ করছি, যেহেতু কোণগুলি "পৃথক" করা হয়েছে এমন আচরণ অর্জন করে যা আমি প্রায় নিখুঁতভাবে খুঁজছি। এগুলিই কেবলমাত্র এমন একমাত্র পরিস্থিতি যা আমি চালিত করেছি।
ইয়ানলারসন

0

আপনি মাটির চেয়ে অবজেক্টটিকে "শক্ত" করে তুলতে পারেন, যার অর্থ, সংঘর্ষের বিষয়টি ধরে নিয়ে খেলোয়াড় চলমান বস্তুতে "ধাক্কা দেওয়ার" বিপরীতে, "মাটিতে" "চাপিয়ে দেবে"।

এটি ধরে নিয়েছে যে খেলোয়াড় কোনও জিনিস বা গ্রাউন্ডকে "" মধ্যে "চাপ দিতে সক্ষম নয়।


0

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

বিটিডাব্লু, যদি আকারের সংমিশ্রণগুলির মধ্যে কেবল সংখ্যক সংঘর্ষ ঘটতে পারে তবে "সংঘর্ষ-সনাক্তকরণ" বিটম্যাপগুলি প্রাক-গণনা করা কার্যকর হতে পারে যদি পিক্সেলটি অফসেটে প্রথম স্প্রিটে সেট করা থাকে (x1, y1) এবং দ্বিতীয়টিতে দ্বিতীয়টির অফসেটে (x2, y2), পিক্সেল এ অফসেট (x1-x2, y1-y2) সংঘর্ষের মানচিত্রে সেট করা হবে। এ জাতীয় প্রাক-গণনা করা সংঘর্ষের মানচিত্র সংঘর্ষের মানচিত্রে একক পিক্সেলের স্থিতি পরীক্ষা করে দুটি স্প্রাইটের মধ্যে সংঘর্ষ সনাক্ত করতে সক্ষম করবে।


0

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


0

আমি এখনও এ পর্যন্ত কাজ করতে হবে। এটি ক্রাশার আন্দোলন সম্পর্কে "বাহ্যিক" তথ্য প্রয়োজন হয় না এবং মিথ্যা ধনাত্মক সমস্যা সমাধান করে। যখন কোনও মিথ্যা ধনাত্মক শনাক্ত করা হয় তখন এটি সংঘর্ষ হিসাবে বিবেচিত হয় (এবং এটি আসলে এটিই):

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

চরিত্রটি যদি চলন্ত এবং চূর্ণবিচূর্ণ হয় (আগত ফ্রেমের জন্য বিরোধী পক্ষের সংঘর্ষগুলি) তবে শেষ ফ্রেম / পুনরাবৃত্তি স্থানাঙ্কগুলিতে ক্রাশের জন্য আবার পরীক্ষা করুন:

  1. যদি আবার নিশ্চিত না হয় তবে এটি চরিত্রের নিজস্ব গতির কারণে এবং চরিত্রটি একটি সংঘর্ষের মতো শেষ ফ্রেমে / পুনরুক্তি স্থানাঙ্কে ফিরে আসতে হবে

  2. দ্বিতীয়বার ক্রাশ নিশ্চিত হয়ে গেলে ক্রাশের সাথে এগিয়ে যান proceed

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