প্ল্যাটফর্মের গেমটিতে আমি কীভাবে চলন্ত প্ল্যাটফর্মগুলি পরিচালনা করব?


15

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

উত্তর:


16

আমার সমাধানটি হ'ল গেমের মানচিত্রের প্রতিটি শারীরিক সত্তাকে গাছের নোড হিসাবে এবং মানচিত্রটি নিজেই মূল নোড হিসাবে বিবেচনা করা । নোডগুলিতে অন্যান্য নোড থাকতে পারে। প্রতিটি নোড ম্যাপ নোডের ভিতরে (প্রত্যক্ষ বা অপ্রত্যক্ষভাবে) থাকে contained

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

এটি হওয়ার জন্য, প্রতিটি নোডের প্যারেন্ট নোডের সাথে সম্পর্কিত (x, y) অবস্থান থাকতে হবে । উদাহরণস্বরূপ, আপনার চরিত্রটি প্ল্যাটফর্মের তুলনায় (1,0) এ অবস্থিত হতে পারে , যা নিজেই গেমের মানচিত্রের তুলনায় (10,10) এ অবস্থিত হতে পারে । এইভাবে, যদি প্ল্যাটফর্মটি সরানো হয়, আপনার চরিত্রটি পুরোপুরি স্পষ্টভাবে চলবে।

এই শ্রেণিবিন্যাসের গাছে, প্রতিটি নোডের অবস্থান তার পজিশনের সমষ্টি এবং তার প্রতিটি পিতামাতার নোডের অবস্থানের সমান। ধরা যাক আমরা মানচিত্রে চরিত্রের অবস্থান পেতে চাই। আমরা গণনা:

(চরিত্রের অবস্থান) + (পিতামাতার নোডের অবস্থান) + (মূল নোডের অবস্থান) = (1,0) + (10,10) + (0,0) = (১১,০)

ঠিক আছে, তাই এই সমস্ত সময় আপনার চরিত্রটি প্ল্যাটফর্মে দাঁড়িয়ে আছে। জাম্পিং সম্পর্কে কি? আচ্ছা সে মুহূর্তে জাম্প, আপনি তাকে মঞ্চ থেকে বিচ্ছিন্ন এবং প্ল্যাটফর্ম ধারণকারী নোড তাকে সংযুক্ত ; এই ক্ষেত্রে, মানচিত্র (রুট নোড)।

যখন সে আবার অবতরণ করবে, তার যে নোডে নেমেছে তার সাথে তাকে যুক্ত করুন।


1
আমি প্লেয়ারকে প্রভাবিত করতে নোড থেকে এক্স এবং ওয়াই গতিও ব্যবহার করব। উদাহরণ 1: প্ল্যাটফর্ম সত্যিই দ্রুত উপরে চলে যায় এবং থামে, প্লেয়ারের উপরের গতি থাকে এবং চালু হয়। উদাহরণ 2: প্ল্যাটফর্মটি মারাত্মক গতিতে পড়া খেলোয়াড়ের চেয়ে কিছুটা ধীর গতিতে নামছে। প্ল্যাটফর্মটি SPLUT
অ্যাটাকিংহোব

এটি একটি আকর্ষণীয় পদ্ধতির তবে কেবল চলমান প্লোরটর্মের অনুমতি দেওয়ার জন্য আমার ইঞ্জিনে পুরোপুরি একটি সম্পূর্ণ পরিবর্তন বলে মনে হচ্ছে। সম্ভবত যদি আমি অবজেক্টঅনপ্ল্যাটফর্মটিকে একটি উপাদান হিসাবে তৈরি করি যা আমি যে কোনও বস্তুকে কেবল সাময়িকভাবে এই প্রভাবটি দিতে পারি?
আয়ান

10

আমি এটি ছদ্ম-পদার্থবিজ্ঞানের সমস্যা হিসাবে বিবেচনা করার পরামর্শ দেব এবং স্থল ঘর্ষণ ব্যবহার করে এটি সমাধান করব।

চরিত্রটি মাটিতে রাখার জন্য আপনি ইতিমধ্যে মাধ্যাকর্ষণ ব্যবহার করছেন, এটি এমন পরিস্থিতিতে পরিচালনা করে যেখানে প্ল্যাটফর্মগুলি উপরে এবং নীচে চলে যায়। বাম এবং ডান চলাচল পরিচালনা করতে, গ্রাউন্ডটি চরিত্রটিতে প্রচুর পরিমাণে ঘর্ষণ করতে হবে। সাধারণত এই ঘর্ষণ স্তরটি 1.0 বা 100% হবে।

চরিত্রটি যদি স্থির থাকে তবে তাদের গতিবেগ 0 হয় এবং ঘর্ষণের কারণে তারা প্ল্যাটফর্মটির 100% গতি লাভ করে। নিম্নলিখিত মত কিছু:

character_velocity = friction * platform_velocity

এই পদ্ধতির সুবিধাটি হ'ল এটি সহজেই অতিরিক্ত প্লাটফর্মিং মেকানিকগুলিকে ndsণ দেয় যেমন খাড়া opালুগুলিতে ঘর্ষণটি কাটিয়ে উঠতে সক্ষম হওয়া, আপনার চরিত্রটিকে স্লাইড করতে দেয়। এটি বরফটি তৈরি করতে ঘর্ষণটিকে সহজেই হ্রাস করতে দেয় যা চরিত্রটি সরে যায়।

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


0

আপনি প্লেয়ারের অবস্থানটি "স্তরে নিরঙ্কুশ" নয় তবে "প্ল্যাটফর্মের সাথে তুলনামূলক" স্থির করতে পারেন, তারপরে এমন একটি ক্রিয়া রয়েছে যা তার আসল অবস্থান দেয়। যদিও আমি এটি পছন্দ করি না।

প্লেয়ারটিকে প্ল্যাটফর্মের সাথে আবদ্ধ করা আরও ভাল (এবং সহজ) হতে পারে যাতে প্ল্যাটফর্মটি যখন + x / + y সরানো হয়, প্লেয়ারটি যতটা সরে যায়।

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