কীভাবে 2 ডি বিস্ফোরণগুলি কার্যকর করা যায় যা অ্যাকাউন্টগুলি কভার এবং দূরত্ব গ্রহণের ফলে ক্ষতির কারণ হয়ে থাকে?


9

আমি কীভাবে 2 ডি বিস্ফোরণটি এমনভাবে বাস্তবায়ন করতে পারি যাতে এটি অক্ষরগুলির কম ক্ষতি করে যা ক্রেট বা অন্যান্য কভারের আড়ালে লুকায়? আদর্শভাবে ক্ষতি কভারের শক্তির উপর নির্ভর করবে (উদাহরণস্বরূপ ধাতব প্রাচীর কাঠের ক্রেটকে আরও ভাল রক্ষা করবে)। দূরত্বের সাথে আদর্শভাবে ক্ষতি হ্রাস পাবে।

আমি বক্স 2 ডি ফিজিক্স ইঞ্জিনের একটি বন্দর ব্যবহার করতে যাচ্ছি - ফারসিয়ার।

ধন্যবাদ.


1
উইকি ( goo.gl/c1OJx ) এমন কণাগুলি ব্যবহার করার পরামর্শ দেয় যা প্রকৃতপক্ষে প্রকৃত শারীরিক প্রক্রিয়াগুলি অনুকরণ করে এমন কণা ব্যবহার করে যা বাস্তবে বোধগম্য হয়। কেউ কি এই জাতীয় দৃষ্টিভঙ্গি বিবেচনা করেছেন?
ডেন

উত্তর:


8

এটি করার একটি অপেক্ষাকৃত সরল পদ্ধতি হ'ল বিস্ফোরণের কেন্দ্র থেকে প্রতিটি সত্তার কেন্দ্রে যেখানে DISTANCE(explosion,entity) < exlosion.max_radius(সিউডো কোড) একটি রশ্মি আঁকুন ।

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

যখন রশ্মিটি সত্তাকে আঘাত করে, তখন যা ক্ষতি হয় তা হ'ল আপনার বিস্ফোরণ ক্ষতি।

এই পদ্ধতির জন্য, আপনি সম্ভবত একটি চমত্কার উচ্চ বেস ক্ষতি চান যা দূরত্বের সাথে দ্রুত হ্রাস পায় (দূরত্বের বর্গক্ষেত্রের বিপরীতে আনুপাতিকভাবে সুন্দরভাবে করা উচিত)।


আরেকটি পদ্ধতি হ'ল সত্তা সমেত একটি ক্ষেত্র আঁকুন; তবে আরও প্রশস্ত নয়; এবং সমস্ত উপায় .max_radius। এই সেক্টরের ক্ষেত্রফল থেকে বিস্ফোরণ এবং সত্তার মধ্যে যে কোনও কভার দ্বারা আচ্ছাদিত অঞ্চলটি এর প্রচ্ছদ মান দ্বারা গুণিত হয়। বাকি অঞ্চলটি আপনার বিস্ফোরণের ক্ষতি।

এর একটি ঝরঝরে পার্শ্ব প্রতিক্রিয়া হ'ল সত্তাটি বিস্ফোরণের সাথে ঘনিষ্ঠ হওয়ার সাথে সাথে খাতটি আরও বিস্তৃত হয় এবং আপনি যত বেশি ক্ষয়ক্ষতি নেবেন (যেমন আপনি সেক্টরের সমস্ত অঞ্চল গণনা করেন, এবং কেবলমাত্র এর মধ্যবর্তী অংশের অংশটি বিয়োগ করুন সত্তা এবং বিস্ফোরণ।

এটি কভারটিকে সত্তা হিসাবে বিবেচনা করতেও কার্যকর হতে পারে; এবং আরও যারা নিকটতম সত্তাগুলি দ্বারা নেওয়া আরও ক্ষয়ক্ষতি কেবল আরও বিয়োগফল, কিন্তু এটি অদ্ভুত হতে পারে।


নিঃসন্দেহে এখানে আরও মার্জিত এবং চতুর পদ্ধতির উপস্থিতি রয়েছে তবে এটির জন্য সম্ভবত কিছু সুন্দর বাজে ক্যালকুলাস প্রয়োজন। এটা সবসময় না।


0

দূরত্বের সাথে ক্ষয় হ্রাস একটি সহজ কাজ হওয়া উচিত। আপনি বিস্ফোরণটি তৈরি করার সময় বিস্ফোরণের কেন্দ্রের স্থানাঙ্কগুলি জানতে হবে। আপনি যেহেতু 2 ডি তে কাজ করছেন, এটি কেবল x এবং y হবে।

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

উদাহরণস্বরূপ, স্থানাঙ্কগুলি (x1, y1) এক্সপ্লোসিওনের কেন্দ্রবিন্দু হিসাবে এবং (x2, y2) প্লেয়ারের স্থানাঙ্ক হিসাবে গ্রহণ করুন। তারপরে আমরা নিম্নলিখিতভাবে নেওয়া ক্ষয়টি গণনা করতে পারি:

Distance from centre = sqrt((x2-x1 + (y2-y1)²)
Damage taken = (Distance from centre/Explosion radius) * max damage 

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

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