पिक्सेल कला खेल बनाने के लिए यूनिटी 2 डी का उपयोग किया जा सकता है?


16

मैं यूनिटी 4.3 में पेश किए गए नए 2 डी फीचर्स को देख रहा हूं, और मुझे लगता है कि मुझे कुछ याद आ रहा है।

मेरे लिए ऐसा लगता है कि वे उच्च रेस 2 डी गेम के लिए डिज़ाइन किए गए हैं, जहां स्प्राइट्स को स्केल करना ठीक है, लेकिन यह पिक्सेल-आर्ट गेम्स के लिए अनुपयुक्त है।

पिक्सेल-आर्ट स्प्राइट को स्क्रीन पर ठीक 1: 1 पिक्सेल प्रदर्शित करने के लिए डिज़ाइन किया गया है: स्केलिंग इसे नष्ट कर देता है (रैखिक अप-स्केलिंग एक अपवाद है, अर्थात आप इसे 2x, 3x, 4x आदि स्केल कर सकते हैं)।

हालाँकि, मुझे "बस इसे प्रदर्शित करने का कोई रास्ता नहीं है" के रूप में पाया गया है, जाहिर तौर पर एकता इसे फिट करने के लिए जो भी रिज़ॉल्यूशन देखती है, उसे बढ़ाने में जोर देती है: मैं कैमरा को नियंत्रित कर सकता हूँ। पैरामीटर, और स्प्राइट के "पिक्सल टू यूनिट" पैरामीटर , लेकिन मैंने इस परिणाम को प्राप्त करने का प्रबंधन नहीं किया।


1
अगर मैं गलत नहीं हूँ, "ऑर्गन ट्रेल" गेम 4.3 से पहले पूरी तरह से यूनिटी 3 डी पर बनाया गया था।
फेलिप

जवाबों:


19

यह लेख कुछ उपयोगी स्पष्टीकरण देता है, भले ही वह 4.3 से पहले आया हो:

यदि आप "पिक्सेल आर्ट" के लिए जा रहे हैं तो कैमरे का ऑर्थोग्राफ़िक आकार महत्वपूर्ण महत्व का है; यह एकता में 2 डी नौकायन का सबसे पेचीदा हिस्सा है।

ऑर्थोग्राफिक आकार व्यक्त करता है कि कैमरा प्रक्षेपण के शीर्ष आधे हिस्से में कितनी विश्व इकाइयां निहित हैं। उदाहरण के लिए, यदि आप 5 का ऑर्थोग्राफ़िक आकार सेट करते हैं, तो व्यूपोर्ट के ऊर्ध्वाधर विस्तार में दुनिया की अंतरिक्ष की ठीक 10 इकाइयाँ होंगी। (क्षैतिज विस्तार प्रदर्शन पहलू अनुपात पर निर्भर हैं।)

याद रखें कि आपका स्प्राइट क्वाड 1 यूनिट है। इसका मतलब है कि ऑर्थोग्राफिक आकार आपको बताता है कि आप व्यूपोर्ट में कितने स्प्राइट्स खड़ी कर सकते हैं (2 से विभाजित)।

पिक्सेल-आर्ट लुक को सफाई से प्रस्तुत करने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि स्प्राइट के स्रोत बनावट के नक्शे के प्रत्येक 1: 1 को व्यूपोर्ट डिस्प्ले में दिखाया गया है। आप स्रोत पिक्सेल को छोड़ दिया जाना या दोगुना नहीं होना चाहते हैं, या आपके स्प्राइट विकृत और "गंदे" दिखेंगे। इसे 1: 1 अनुपात सुनिश्चित करने की चाल एक ऑर्थोग्राफ़िक आकार सेट करने के लिए है जो आपके ऊर्ध्वाधर स्क्रीन रिज़ॉल्यूशन को स्प्राइट की पिक्सेल ऊंचाई से विभाजित करता है।

मान लें कि आप 960x640 पर चल रहे हैं, और आप 64x64 स्प्राइट का उपयोग कर रहे हैं। एक स्प्राइट (64) पैदावार की पिक्सेल ऊंचाई द्वारा ऊर्ध्वाधर स्क्रीन रिज़ॉल्यूशन (640) को विभाजित करने पर, 64x64 स्प्राइट्स की संख्या जो लंबवत रूप से 640 पिक्सेल में खड़ी हो सकती है। याद रखें कि ऑर्थोग्राफ़िक आकार एक आधा-ऊंचाई है, इसलिए इस मामले में आपका लक्ष्य ऑर्थोग्राफ़िक आकार 5 (10 का एक आधा) होने वाला है। इसे ऐसा दिखना चाहिए:

यदि आप अपने ऑर्थोग्राफ़िक आकार को आधा या दो बार सेट करते हैं, तो आप अभी भी प्रयोग करने योग्य परिणाम प्राप्त कर सकते हैं, क्योंकि स्प्राइट का ऊर्ध्वाधर आकार अभी भी व्यूपोर्ट के ऊर्ध्वाधर आकार में समान रूप से विभाजित होगा। लेकिन यदि आप ऑर्थोग्राफ़िक आकार गलत तरीके से सेट करते हैं, तो आप कुछ पिक्सेल को छोड़ कर या दोगुना करके देखेंगे, और यह वास्तव में बहुत बुरा लगेगा:

चर संकल्प

स्वच्छ पिक्सेल कला को प्रस्तुत करने के लिए आपको एकल, निश्चित रिज़ॉल्यूशन तक सीमित रखने की आवश्यकता नहीं है। चर रिज़ॉल्यूशन को संभालने का सबसे सरल तरीका अपने कैमरे में एक कस्टम स्क्रिप्ट संलग्न करना है जो वर्तमान ऊर्ध्वाधर रिज़ॉल्यूशन और ज्ञात (निश्चित) स्प्राइट आकार के अनुसार ऑर्थोग्राफ़िक आकार सेट करता है :

// set the camera to the correct orthographic size
// (so scene pixels are 1:1)
s_baseOrthographicSize = Screen.height / 64.0f / 2.0f;
Camera.main.orthographicSize = s_baseOrthographicSize;

जबकि यह एक साधारण फिक्स है, इसमें एक खामी है: जैसा कि स्क्रीन रिज़ॉल्यूशन कम हो जाता है, आप दुनिया के कम और कम देखेंगे, और स्प्राइट स्क्रीन के अधिक से अधिक भाग लेंगे। स्रोत और स्क्रीन पिक्सल के बीच 1: 1 अनुपात रखने का परिणाम है: 1920x1200 पर 64x64 स्प्राइट 640x480 पर अधिक स्पष्ट स्थान लेता है। यह एक समस्या है या नहीं यह आपके विशिष्ट खेल की जरूरतों पर निर्भर करता है।

यदि आप चाहते हैं कि आपका स्प्राइट स्क्रीन रिज़ॉल्यूशन की परवाह किए बिना उसी स्पष्ट आकार का बना रहे, तो बस ऑर्थोग्राफ़िक आकार को एक निश्चित मान पर सेट करें और स्क्रीन रिज़ॉल्यूशन की परवाह किए बिना इसे वहां छोड़ दें। वहाँ दोष यह है कि आपके स्प्राइट्स में अब 1: 1 स्रोत-टू-स्क्रीन पिक्सेल अनुपात नहीं होगा। आप केवल उन प्रस्तावों के प्रभाव को कम कर सकते हैं, जो केवल आधे या केवल अपने लक्ष्य के संकल्प को दोगुना कर सकते हैं।

(कुछ जोर दिया)

यह स्पष्ट रूप से बेहतर काम करता है यदि ऊंचाई रिज़ॉल्यूशन स्प्राइट आकार से विभाज्य है, लेकिन तब भी जब यह नहीं है, यह अभी भी एक सभ्य परिणाम का एक अच्छा अनुमान देता है।


TL; DR :cameraSelf.orthographicSize = screenH / (float)spriteSize / 2f;


5
एक और उपयोगी चीज है 'टेक्सटाइल' की बनावट छानना।
फेलिप

@ अच्छा मुद्दा: मैं इस बारे में भूल गया क्योंकि मैंने पहले ही इसे समझ लिया था।
ओ ० '।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.