একটি টাইল-ভিত্তিক আইসোমেট্রিক গেমে বিনামূল্যে চলাচল


9

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

বর্তমানে আমি এর কাছাকাছি কিছু তৈরি করেছি: http://jsfiddle.net/KwW5b/4/ (WASD আন্দোলন) movement চলাফেরার ধারণাটি ছিল প্লেয়ারটি যখন অন্য কোনও টাইলের দিকে চলে গিয়েছিল তা সনাক্ত করতে এবং তারপরে অফসেটগুলি ফ্লিপ করে, এবং বেশিরভাগ অংশে এটি সঠিকভাবে কাজ করে (প্রতিটি কোণার প্লেয়ারকে ভুল জায়গায় সরিয়ে নিয়ে যায়: HTTP দেখুন: //www.youtube.com/watch?v=0xr15IaOhrI , যা সম্ভবত আমি পুরো মাউস ম্যাপটি সঠিকভাবে কাজ করতে না পারার কারণে), তবে আমার কোনও বিভ্রান্তি নেই যে এটি একটি ভাল / বুদ্ধিমান সমাধানের খুব কাছেই রয়েছে। এবং যাইহোক, এটি বেশিরভাগই প্রদর্শন করতে হয় আমি কোন ধরণের জিনিসটি প্রয়োগ করতে চাই।


এই কোডটি দুর্দান্ত দেখাচ্ছে, সমস্যাটি ঠিক কী? আপনি বেশ বিনয়ী (একটি ভাল উপায়ে) আপনার কোডটি বরং ভাল বলে মনে হচ্ছে, ডেমোতে কোন বৈশিষ্ট্যটি অনুপস্থিত?
আতুরস্যামস

আমি কোণার সমস্যা বলতে যা বোঝাতে চেয়েছি তা হ'ল এই জাতীয় আচরণ: youtube.com/watch?v=0xr15IaOhrI । সমস্যাযুক্ত অফসেটগুলির জন্য অনেকগুলি চেক-ইন-চেক করা ছাড়া আমি অন্য কোনও সমাধান করতে সক্ষম হয়েছি না এবং তারপরেও কিছু বিশেষ ঘটনা রয়েছে যেখানে প্লেয়ারটি ভুল জায়গায় পৌঁছায়। তবে আমি যেমন বলেছিলাম, আমি ভাবছিলাম যে এই ধরণের চলাচল সাধারণত কীভাবে কার্যকর করা হয়, যেহেতু আমি অন্য কোথাও ব্যবহারের পদ্ধতিটি দেখিনি।
xtr486

উত্তর:


10

সবার আগে আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি থেকে দিকনির্দেশগুলি পরিবর্তন করুন: ডাব্লু - উপরের-বাম এস - ডাউন-ডান এ - নীচে বাম ডি - শীর্ষ-ডান

আরও স্বজ্ঞাত: ডব্লু - আপ এস - ডাউন এ - বাম ডি - ডানদিকে

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


1
আপনার উত্তরটি সত্যিই আশাব্যঞ্জক দেখাচ্ছে, তবে আমি স্বীকার করি এটির বেশিরভাগ অংশ কেবল আমার মাথার উপরে। তবে, আমি পরের কয়েক দিন আপনার সমাধান হজম করার চেষ্টা করব। এটি কি আপনার পরে যা ছিল কাছাকাছি? jsfiddle.net/Sd4ZP/18 এতে কিছু যুক্তি ত্রুটি রয়েছে (এক দ্বারা বন্ধ) এবং এগুলি , তবে আমি যতটা জানি টপ-ডাউন এবং আইসোমেট্রিক মানচিত্রে একই চলন রয়েছে। যা আমি
প্রায়ও অর্জন

এখন পর্যন্ত ঠিক আছে! আমি সন্ধ্যায় এটি দেখতে হবে। বিষয়টি হ'ল আইসোমেট্রিক টাইল অঙ্কন পদ্ধতিতে পজিশন-ব্যবহারকারী () অনুবাদ ফাংশনে রূপান্তরকরণ প্রয়োগ করা এবং এটি অবস্থান থেকে ক্রমবর্ধমান () পদ্ধতিতে বিপরীত করা।
মার্কাস ভন ব্রোডি

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

ধন্যবাদ! আমি আসলে নিজেকে কিছুটা (ভাল, বাছাই করতে) পরিচালনা করতে পেরেছিলাম, অঙ্কনকোষিত কার্যটিতে আইসোমেট্রিক অফসেট। এখন এটি এর মতো দেখাচ্ছে: jsfiddle.net/P2eKF/4 , যা মূল প্রশ্নে আমি যা বলেছিলাম ঠিক তেমন করে বলে মনে হচ্ছে, তাই আমি আপনার উত্তরটি চিহ্নিত করব। :)
xtr486

আমি খুশি যে আপনি এটি করেছেন! আমি পছন্দ করি যে ডাব্লুএ, ডাব্লুডি, এএস, এসডি কী কম্বিনেশনগুলি 45 ডিগ্রি কোণগুলির পরিবর্তে আইসোমেট্রিক অক্ষগুলিতে চলাচলকে সারিবদ্ধ করে। ভাল কাজ.
মার্কাস ভন ব্রডি

0

যদি আমি বুঝতে পারি, আপনি প্লেয়ারটি টাইল টাইল এ সরানো চান তবে লাফ না দিয়ে। আপনি পারেন:

1- টাইল টি 0 দিয়ে শুরু করুন এবং 0 অফসেট করুন

2- যখন খেলোয়াড় টাইল টি 1 সেট অফসেটে চলে যায় = - (t1 - t0)

3- প্লেয়ার আপডেটে, অফসেট 0 না হলে আপডেটের সময় এবং প্লেয়ারের গতি ব্যবহার করে হ্রাস।

amount = deltatime * playerSpeed
deltaoff = sqrt(offsetX*offsetX + offsetY*offsetY)
total = min( amount, deltaoff )
offsetX = offsetX - (total * offsetX / deltaoff)
offsetY = offsetY - (total * offsetY / deltaoff)

4- প্লেয়ার কখন টাইল রয়েছে তা জানতে আপনি অফসেট == 0 চেক ব্যবহার করতে পারেন।

এটির সাহায্যে আপনি এমন খেলোয়াড় পাবেন যা মানচিত্রে বিনামূল্যে সরানো তবে টাইলগুলিতে আটকে থাকুন।

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