আপনি কীভাবে একটি পালা ভিত্তিক গেমের মধ্যে বিশ্ব রাষ্ট্র থেকে অ্যানিমেশনটির বিচ্ছেদকে পরিচালনা করবেন? আমি বর্তমানে একটি 2 ডি গ্রিড ভিত্তিক গেমের সাথে কাজ করছি। নীচের কোডটি আরও ভালভাবে ব্যাখ্যা করার জন্য সরল করা হয়েছে।
যখন কোনও অভিনেতা সরে যায়, আমি যখন প্রাণীটি অ্যানিমেট করে নতুন অবস্থানে চলে যায় তখন আমি বাঁকগুলির প্রবাহকে থামিয়ে দিতে চাই। অন্যথায়, পর্দাটি বিশ্বরাজ্যের তুলনায় উল্লেখযোগ্যভাবে পিছিয়ে যেতে পারে, যা অদ্ভুত দৃশ্যমান চেহারা তৈরি করবে। আমি এমন অ্যানিমেশনগুলিও রাখতে চাই যা গেমের প্রবাহকে বাধা দেয় না - একটি কণার প্রভাব গেমপ্লেকে প্রভাবিত না করে একাধিক টার্নের উপরে ফুটিয়ে তুলতে পারে।
আমি যা করেছি তা হ'ল দুই প্রকারের অ্যানিমেশনগুলি, যা আমি ব্লকিং অ্যানিমেশন এবং অ-ব্লকিং অ্যানিমেশনগুলিকে কল করি। প্লেয়ারটি যখন সরে যেতে চায়, তখন কোডটি কার্যকর হয়
class Actor {
void move(PositionInfo oldPosition, PositionInfo newPosition) {
if(isValidMove(oldPosition, newPosition) {
getGame().pushBlockingAnimation(new MoveAnimation(this, oldPosition, newPosition, ....));
player.setPosition(newPosition);
}
}
}
তারপরে মূল আপডেট লুপটি করে:
class Game {
void update(float dt) {
updateNonBlockingAnimations(dt); //Effects like particle explosions, damage numbers, etc. Things that don't block the flow of turns.
if(!mBlockingAnimations.empty()) {
mBlockingAnimations.get(0).update(dt);
} else {
//.. handle the next turn. This is where new animations will be enqueued..//
}
cleanUpAnimations(); // remove finished animations
}
}
... যেখানে অ্যানিমেশন অভিনেতার পর্দার অবস্থান আপডেট করে।
আরেকটি ধারণা যা আমি প্রয়োগ করছি তা হল একটি একযোগে অবরুদ্ধ অ্যানিমেশন থাকা, যেখানে একাধিক ব্লকিং অ্যানিমেশন একসাথে আপডেট করা হত, তবে পরবর্তী বারটি সমস্ত না হওয়া পর্যন্ত ঘটবে না।
এটি কি জিনিসগুলি করার মতো বুদ্ধিমান উপায় বলে মনে হচ্ছে? কারও কি কোনও পরামর্শ, বা অন্যান্য অনুরূপ গেমগুলি কীভাবে এই জাতীয় কাজ করে তার উল্লেখ রয়েছে re