আমি কীভাবে বুলেট পদার্থবিজ্ঞানকে আমার গেমের সাথে সংহত করব?


12

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

সম্পাদনা করুন - আমি ঠিক বুঝতে পেরেছিলাম যে কিউবোডগুলি আসলে তাদের সাথে এএবিবির সাথে যুক্ত রয়েছে। আমার ধারণা আমি কমপক্ষে এটি পরিবর্তন করতে হবে।

আমার কী পদক্ষেপগুলি অনুসরণ করতে হবে?


2
আপনি 4.4 Integration overviewকি অধ্যায়ের অধীনে ম্যানুয়ালটি একবার দেখেছেন আমি জানি এটি খুব স্পার্টান তবে এটি মূল প্রক্রিয়াটি বর্ণনা করে। সুতরাং যদি আপনি এটি এবং উদাহরণস্বরূপ ডেমোসের কোডটি দেখুন তবে আপনার খুব বেশি সমস্যা হওয়া উচিত নয়।
পিটারটি

বুলেট ফোল্ডারের উদাহরণগুলিও পরীক্ষা করে দেখুন, এখানে 'এম
মাইক সেমদার

@ মাইকসেমদার আমি নির্দিষ্ট কীভাবে খুলব সে বিষয়ে আমি নিশ্চিত ছিলাম না। ফাইলগুলি কি কেবল লিনাক্স তৈরি করে?
স্যার ইয়াকালোট

উদাহরণগুলি কীভাবে খুলবেন সে সম্পর্কে নোটগুলি অবিশ্বাস্যরূপে সহায়ক হবে, তবে আমি কেবল দেখতে পেলাম যে তারা কীভাবে সেখানে জিনিসগুলিকে যুক্ত করেছে linked আমি এটির জন্য গুগল করব তবে আমি ভেবেছিলাম যখন পারি তখন আমার জিজ্ঞাসা করা উচিত।
স্যার ইয়াকালট

এটি আপনি কী প্ল্যাটফর্মের উপর নির্ভর করে। উইন্ডোজে ভিজ্যুয়াল স্টুডিওতে উদাহরণগুলির জন্য একটি .sln ফাইল রয়েছে, আমি ধরে নিই যে আপনি এটি ব্যবহার করেন। বুলেট ফোল্ডারে স্লান ফাইলটি সন্ধান করুন।
মাইক সেমদার

উত্তর:


21

আপনার অনুসরণ করতে হবে এমন প্রাথমিক পদক্ষেপগুলি এখানে:

  1. আপনার পদার্থবিজ্ঞানের সিমুলেশন চালানোর জন্য প্রথমে একটি বিশ্ব অবজেক্ট (যেমন btDiscreteDynamicsWorld) তৈরি করুন

  2. আপনার ইতিমধ্যে এমন একটি ক্লাস থাকা উচিত GameObjectযা সম্ভবত একটি মডেলকে তার বাউন্ডিং বাক্স এবং বিশ্বে অবস্থান / ওরিয়েন্টেশন সহ সঞ্চয় করে। প্রতিস্থাপন অবস্থান / স্থিতিবিন্যাস তথ্য দিয়ে একটি পদার্থবিজ্ঞানের একটি দৃষ্টান্ত শরীর বস্তু (অর্থাত btRigidBody) এবং যখন মডেল রেন্ডারিং, পরিবর্তে শরীর দ্বারা উপলব্ধ তথ্য ব্যবহার করি। দেহটি তৈরি করার সময় আপনাকে এর ভর এবং সংঘর্ষের আকার সরবরাহ করতে হবে যা আপনার কাছে ইতিমধ্যে থাকা বাউন্ডিংয়ের সাথে খাপ খায় match আমি আপনার অন্যান্য প্রশ্নেও এ সম্পর্কে কথা বলেছি ।

  3. যোগ আপনার খেলা বস্তুর প্রতিটি বিশ্বের কাছে লাশ অবজেক্ট।

  4. বিশ্বের পদক্ষেপের মাধ্যমে সিমুলেশনটি আপডেট করুন (যেমন stepSimulationআপনার বিশ্বের দিকে আহ্বান )।

ম্যানুয়ালটি পড়তে কিছুটা সময় নিন কারণ এতে প্রচুর তথ্য রয়েছে।


মন্তব্য মন্তব্য সম্পাদনা করুন

জিজ্ঞাসার আগেই আমি ক্রিঙ্ক করি তবে ... আমি আমার গেমের ডানদিকের ফাইলগুলি সহ কীভাবে খুব প্রাথমিক জিনিসগুলি করব? আপনার যদি সুনির্দিষ্ট প্রয়োজন হয় তবে আমি সেই ফাইলগুলি সন্ধান করছি যা দেহের অনমনীয় সংঘর্ষগুলির সাথে মোকাবিলা করবে। এছাড়াও এ পর্যন্ত সাহায্যের জন্য আপনাকে অনেক ধন্যবাদ!

ঠিক আছে, আপনার মন্তব্য থেকে এটি প্রদর্শিত হবে যে আপনি এর আগে কখনও বাহ্যিক সি ++ লাইব্রেরি নিয়ে কাজ করেন নি। আমি এটি করার পরে এটি বেশ কিছুক্ষণ হয়েছে, তবে প্রক্রিয়াটি (ভিজ্যুয়াল স্টুডিওতে) হওয়ার বিষয়টি আমি এভাবেই মনে করি।

প্রারম্ভিকদের জন্য আমি ম্যানুয়ালটি উদ্ধৃত করেছি যা ইতিমধ্যে আপনার কী প্রয়োজন তা ব্যাখ্যা করে:

- #include btBulletDynamicsCommon.h in your source file 
- Required include path: Bullet/src folder 
- Required libraries: BulletDynamics, BulletCollision, LinearMath

এবং উপরের শর্তগুলি পূরণ করতে আপনাকে অনুসরণ করতে হবে এমন বেসিক পদক্ষেপগুলি এখানে ...

1. প্রস্তুতি পদক্ষেপ

সবার আগে, আপনি যে ডিরেক্টরিটি ডাউনলোড করেছেন সেটিকে একটি পরিচিত ডিরেক্টরিতে সরিয়ে ফেলুন, যেমন C:\Bullet। আপনাকে এই ফোল্ডারটির পথটি পরে জানতে হবে।

এর ভিতরে দুটি ফোল্ডার রয়েছে যা আপনার প্রকল্পে আপনাকে উল্লেখ করতে হবে। প্রথমটি হ'ল srcফোল্ডারটি .hহোল্ডারের ফাইলগুলি ধারণ করে যা আপনি আপনার উত্স কোডে অন্তর্ভুক্ত করবেন । দ্বিতীয়টি হ'ল libফোল্ডার যা আপনার প্রকল্পের সাথে সংযুক্ত.lib হবে এমন লাইব্রেরি ফাইলগুলিকে ধারণ করবে । লক্ষ্য করুন যে অন্তর্ভুক্ত করা এবং লিঙ্ক করা দুটি ভিন্ন জিনিস।

তবে libফোল্ডারটি আপাতত খালি থাকা উচিত, কারণ আপনি এখনও ইঞ্জিনটি তৈরি করেন নি। সুতরাং উদাহরণস্বরূপ সিএমকেক এবং ভিজ্যুয়াল স্টুডিও ব্যবহার করে কীভাবে প্রকল্পটি তৈরি করা যায় সে সম্পর্কে ম্যানুয়ালটি দেখুন। এটি 7 পৃষ্ঠায়।

আপনি সফল করার পরে, আপনি অন্তত তিনটি ফাইল থাকা উচিত libফোল্ডার: BulletDynamics.lib, BulletCollision.libএবং LinearMath.lib(আমি ম্যানুয়াল থেকে মনন am)। বুলেট এবং আপনার প্রকল্পের মধ্যে সংযোগ তৈরি করতে এখন ...

2. শিরোনাম অন্তর্ভুক্ত করুন

প্রথমত, আপনাকে C:\Bullet\srcআপনার প্রকল্পের অন্তর্ভুক্ত পাথ বিকল্পগুলিতে ফোল্ডারটি যুক্ত করতে হবে । আপনি ভিজ্যুয়াল স্টুডিওতে আপনার প্রকল্পের ডান-ক্লিক করে, নেভিগেট করে Configuration Properties -> C/C++ -> General -> Additional Include Directoriesএবং সেখানে ডিরেক্টরিটির পথটি লেখার মাধ্যমে এটি করতে পারেন ।

সেট আপ করার পরে, আপনি কেবল #include “btBulletDynamicsCommon.h”আপনার কোডটি করতে পারেন । এই শিরোনামটি আপনার প্রয়োজনীয় সমস্ত বৈশিষ্ট্যের কেন্দ্র হিসাবে কাজ করবে বলে মনে হচ্ছে।

৩. লাইব্রেরিগুলিকে লিঙ্ক করুন

শেষ পর্যন্ত আপনাকে উপরে বর্ণিত লাইব্রেরিগুলি লিঙ্ক করতে হবে। ফ্রিস্ট, এর নীচে ফোল্ডারে Configuration Properties -> Linker -> General -> Additional Library Directoriesপাথ যোগ করুন libবা অন্য কথায় C:\Bullet\lib,।

তারপরে, Configuration Properties -> Linker -> Input-> Additional Dependenciesঅধীনস্থতার তালিকায় লাইব্রেরির নাম যুক্ত করুন। প্রতিটি লাইব্রেরি একটি দিয়ে আলাদা করুন ;এবং ফাইলের এক্সটেনশনটি ভুলে যাবেন না। সুতরাং উদাহরণস্বরূপ, আপনি পারে যোগ তালিকার শেষে এই: BulletDynamics.lib;BulletCollision.lib;LinearMath.lib

এর পরে আপনার প্রকল্পটি তৈরি এবং পরিচালনা করতে সক্ষম হওয়া উচিত।


জিজ্ঞাসার আগেই আমি ক্রিঙ্ক করি তবে ... আমি আমার গেমের ডানদিকের ফাইলগুলি সহ কীভাবে খুব প্রাথমিক জিনিসগুলি করব? আপনার যদি সুনির্দিষ্ট প্রয়োজন হয় তবে আমি সেই ফাইলগুলি সন্ধান করছি যা দেহের অনমনীয় সংঘর্ষগুলির সাথে মোকাবিলা করবে। এছাড়াও এ পর্যন্ত সাহায্যের জন্য আপনাকে অনেক ধন্যবাদ!
স্যার ইয়াকালট

আমার অ্যাডিশনটি দেখুন
ডেভিড গাউভিয়া

@ আশেরইহর্ন কোনও সমস্যা নেই, দু'বছর আগে আমি প্রথম প্রথম সি ++ গ্রন্থাগার নিয়ে কাজ করার পরেও আমাকে হোঁচট খেয়েছে।
ডেভিড গৌভিয়া

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

@ অ্যাশারইনহর্ন হ্যাঁ, গেমটি সহজ বলে মনে হলেও আপনার নিজের পদার্থবিজ্ঞানের ইঞ্জিনটি লেখতে বিরক্ত করবেন না । আমি যখন প্রথমবার পদার্থ বিজ্ঞানের ইঞ্জিনটি ব্যবহার করি তখন এটি নিজেকে একটি সাধারণ 2 ডি গেমটিতে প্রয়োগ করার চেষ্টা করার পরে হয়েছিল। আমি পৃথক অক্ষের উপপাদ্যটি ব্যবহার করে OBB-OBB সংঘর্ষ সনাক্তকরণ কার্যকর করেছি, কিন্তু যখন আমি এমন স্থানে পৌঁছলাম যেখানে আমার সংঘর্ষের প্রতিক্রিয়া দরকার তখন আমি সম্পূর্ণ আটকে গিয়েছিলাম। তারপরে আমি অনুভব করেছি যে আমি একটি পদার্থবিজ্ঞানের ইঞ্জিনটিও চেষ্টা করতে পারি (বিশেষত আমি বাক্স 2 ডি ব্যবহার করেছি) এবং এক ঘন্টার মধ্যে আমার সবকিছু শেষ হয়ে গেছে।
ডেভিড গাউভিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.