আমার পদ্ধতিটি অন্যদের প্রদত্ত সমাধানগুলির সাথে বেশিরভাগই অনুরূপ :) আমি গেমটিকে পর্দার আকার থেকে স্বতন্ত্র করতে যে পদ্ধতি গ্রহণ করি সে সম্পর্কে বিস্তারিতভাবে ব্যাখ্যা করার চেষ্টা করব।
স্ক্রিন ওরিয়েন্টেশন
স্ক্রিন ওরিয়েন্টেশনের উপর নির্ভর করে (ল্যান্ডস্কেপ বা প্রতিকৃতি) আপনার ক্যামেরা স্থির উচ্চতা বা নির্দিষ্ট প্রস্থের সাথে স্কেল করবে কিনা তা বিবেচনা করতে হবে। বেশিরভাগ ক্ষেত্রে আমি ল্যান্ডস্কেপ ওরিয়েন্টেড গেমগুলির জন্য নির্দিষ্ট প্রস্থ এবং প্রতিকৃতি ভিত্তিক গেমগুলির জন্য নির্দিষ্ট উচ্চতা চয়ন করি।
ক্যামেরা স্কেলিং
আলোচিত হিসাবে এটি স্থির উচ্চতা বা নির্দিষ্ট প্রস্থ হতে পারে।
স্থির উচ্চতা : গেমের উল্লম্ব অঞ্চলটি সর্বদা পর্দার উচ্চতার সাথে ফিট করে। এবং স্ক্রিন দিক অনুপাত পরিবর্তনের সাথে সাথে স্ক্রিনের বাম এবং ডানে অতিরিক্ত স্থান যুক্ত হবে। এটি বাস্তবায়নের জন্য আপনার কোনও কোড করার দরকার নেই, এটি unityক্য ক্যামেরার ডিফল্ট আচরণ।
স্থির প্রস্থ : গেমের অনুভূমিক অঞ্চলটি সর্বদা পর্দার প্রস্থে ফিট করে। এবং স্ক্রিনের দিক অনুপাত পরিবর্তনের ফলে উপরে এবং নীচে অতিরিক্ত স্থান যুক্ত করা হবে। এটি বাস্তবায়নের জন্য আপনাকে কোডের একটি ছোট অংশ লিখতে হবে। পরে আপনি কোড ফর্ম আপডেট ফাংশনটি সরিয়েছেন এবং তা জাগ্রত রাখুন তা নিশ্চিত করুন।
using UnityEngine;
[ExecuteInEditMode]
public class ScaleWidthCamera : MonoBehaviour {
public int targetWidth = 640;
public float pixelsToUnits = 100;
void Update() {
int height = Mathf.RoundToInt(targetWidth / (float)Screen.width * Screen.height);
camera.orthographicSize = height / pixelsToUnits / 2;
}
}
সম্পাদকে আপনি বিশ্বব্যাপী যে অঞ্চলটি প্রদর্শন করতে চান তা নির্ধারণ করতে আপনি টার্গেটউইথ পরিবর্তন করতে পারেন। এই কোডটি 2 ডি গেমসের জন্য অন্যান্য অনেক অনুশীলনের পাশাপাশি নীচের ভিডিওতে ব্যাখ্যা করা হয়েছে :)
Iteক্যবদ্ধ 2014 - 2D Pক্যে সেরা অনুশীলনগুলি
আনুমানিক অনুপাত
বিস্তৃত থেকে সংক্ষিপ্ত তালিকাভুক্ত দিক অনুপাত অনুসরণ করে, অ্যান্ড্রয়েড এবং আইওএস উভয়ের জন্য প্রায় সমস্ত পর্দার আকারকে কভার করে
- 5: 4
- 4: 3
- 3: 2
- 16:10
- 16: 9
আমি সাধারণত গেম উইন্ডোর নীচে প্রদত্ত ক্রমে এই সমস্ত দিক অনুপাত সেট করে থাকি, কারণ বিভিন্ন স্ক্রিনের আকারের জন্য পরীক্ষা করার সময় এটি কার্যকর হয় :)
ব্যয়যোগ্য অঞ্চল
এটি সেই অঞ্চল যা আপনার চয়ন করা ক্যামেরা স্কেলিংয়ের উপর নির্ভর করে পাশ বা উপরে / নীচে স্ক্রিনে যুক্ত হবে।
স্থির উচ্চতার জন্য সমস্ত গেমের উপাদানগুলি 16: 9 অনুপাতের মধ্যে সবচেয়ে বেশি ফিট করা উচিত যা সংকীর্ণ। এবং ব্যাকগ্রাউন্ডটি 5: 4 অনুপাতের কভার না হওয়া পর্যন্ত প্রসারিত হওয়া উচিত। যা নিশ্চিত করে যে আপনার গেমের পাশে কখনও কালো ফালা নেই।
নির্দিষ্ট প্রস্থের জন্য এটি প্রায় একই তবে এখানে উপাদানগুলি 5: 4 অনুপাতের সাথে মাপসই করা উচিত এবং বিজি 16: 9 পর্যন্ত প্রসারিত হওয়া উচিত।
কোট
কখনও কখনও আমরা ব্যয়যোগ্য অঞ্চল পদ্ধতির ব্যবহার করতে পারি না কারণ গেম খেলার জন্য পুরো উপলব্ধ পর্দাটি আমাদের ব্যবহার করতে হবে।
উদাহরণস্বরূপ, আকাশ থেকে পড়ে থাকা কয়েনগুলি ধরা, নির্দিষ্ট উচ্চতার সাথে একটি প্রতিকৃতি গেমটি বিবেচনা করুন। এটিতে আমাদের প্লেয়ারকে উপলভ্য স্ক্রিনের প্রস্থের উপর অনুভূমিকভাবে স্থানান্তরিত করার ক্ষমতা প্রদান করতে হবে।
অতএব বিশ্বের কো-অর্ডিনেটের ক্ষেত্রে আমাদের ক্যামেরার গণ্ডিগুলি প্রয়োজন যেখানে বিশ্বের অবস্থানের ক্যামেরা ক্লিপগুলির বাম, ডান, উপরে বা নীচে রয়েছে know
আমরা এই সীমাগুলিকে অ্যাঙ্কর গেম উপাদানগুলি বা ক্যামেরাটির কোনও পছন্দসই দিকটিতে ইউআই করতেও ব্যবহার করতে পারি।
ক্যামেরা.ভিউপোর্টপো ওয়ার্ল্ডপয়েন্ট ব্যবহার করে আমরা সীমানা পেতে পারি V ভিউপোর্টের স্থানটি স্বাভাবিক এবং ক্যামেরার সাথে সম্পর্কিত। ক্যামেরার নীচে বামটি (0,0); উপরের ডানটি (1,1)। Z অবস্থানটি ক্যামেরা থেকে বিশ্ব ইউনিটে রয়েছে। 2 ডি / অরথোগ্রাফিকের জন্য z এর কোনও গুরুত্ব নেই।
Vector3 leftBottom = camera.ViewportToWorldPoint(new Vector3(0, 0, camera.nearClipPlane));
Vector3 rightTop = camera.ViewportToWorldPoint(new Vector3(1, 1, camera.nearClipPlane));
float left = leftBottom.x;
float bottom = leftBottom.y;
float right = rightTop.x;
float top = rightTop.y;
UI 'তে
ইউআই এর জন্য আমরা গেম উপাদানগুলির জন্য আমরা একই ধারণাগুলি প্রয়োগ করতে পারি। ইউনিটি 5 ইউআই চালু করার পরে এবং এনজিইউআইয়ের মতো প্লাগইনগুলির উপলব্ধতার পরে এটি খুব বেশি সমস্যা হবে না :)