দুটি বস্তুর মধ্যে ঘূর্ণন রাখা


9

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

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

আমি কীভাবে এটি অর্জন করতে পারি তা সম্পর্কে কোনও টিপস?


আমি মনে করি উভয় বস্তু অন্য বস্তুর কেন্দ্রের অক্ষ সম্পর্কে ঘোরবে।
MichaelHouse

উত্তর:


3

যতদূর কোণ সম্পর্কিত, কেবল দ্বিতীয় বস্তুর কোণটি প্রথমটির কোণ হিসাবে একই রাখুন। অবস্থানের জন্য, যখন দুটি বস্তু একে অপরের সাথে সংঘর্ষ হয়, দূরত্বের সূত্রটি ব্যবহার করে প্রথম থেকে দ্বিতীয় বস্তুর দূরত্ব সন্ধান করুন।

distance = math.sqrt((x2 - x1)^2 + (y2 - y1)^2)

প্রথম বস্তুর তুলনায় দ্বিতীয় বস্তুর অবস্থান অনুসন্ধান করতে:

x2 = x1 + distance * math.cos(angle)
y2 = y1 + distance * math.sin(angle)

2

@ টেসেলোডের উত্তর ছাড়াও, আমি আপনাকে সুপারিশ করব যে আপনার গেমের প্রতিটি বিশ্বজগতের জন্য সংযুক্ত বস্তুর একটি তালিকা রাখুন। এর লাইন বরাবর কিছু List<WorldObject> AttachedObjects। তারপরে, আপনি যখন কোনও সংঘর্ষ শনাক্ত করবেন তখন আপনি লালটির সাথে কালো আয়তক্ষেত্র যুক্ত করবেন AttachedObjects। তারপরে, প্রতিবার আপনি যখন পিতামাতার অবস্থান আপডেট করেন তখন @ টেসেলোডের পদ্ধতিটি ব্যবহার করে বাচ্চাদের অবস্থানগুলি আপডেট করার বিষয়টি কেবলমাত্র।


2

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

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

// When Latching:
theta = Red.angle - Black.angle;

// When retrieving Red's angle:
Red.angle = Black.angle + theta

অ্যাঙ্গেল ডিফ


1

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

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

+ শর্ত যদি সন্তানের জন্য প্রয়োগ করা শক্তি যৌথ ভাঙার পক্ষে যথেষ্ট শক্তিশালী হয় এবং আপনি কেবলমাত্র পিতা-মাতার>> সন্তানের সম্পর্কটি সরিয়ে এটির "আনল্যাচিং" পরিচালনা করতে পারেন। যদি কেবল একটি শিশু থাকে তবে আপনি এটিকে খুব আলাদা করতে পারবেন এবং অদৃশ্য পিতামাতাকেও সরিয়ে দিন।

আপনি আগ্রহী হলে আমি আরও বিশদ সরবরাহ করতে পারি (ছবি এবং কমপক্ষে সিউডোকোড এবং এর সাথে)।

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