2014-11-03 6 views
8

यूनिटी .getAxis(string name) उपयोगकर्ता इनपुट (तीर, माउस या यहां तक ​​कि जॉयस्टिक) द्वारा उत्पन्न विचार ऑफसेट को वापस करने लगता है। वापसी मूल्य आसानी से mousewheel को छोड़कर <-1; 1> के अंतराल में है।यूनिटी इनपुट .getAxis के साथ मैं किस पैरामीटर का उपयोग कर सकता हूं?

विभिन्न कोड नमूने से मैं इनपुट प्राप्त करने के कई तरीके देख सकता हूं, लेकिन ऐसा कोई वास्तविक नाम/इनपुट सूची नहीं है। मेरे मामले में, मैं व्हील या पीजीअप और पीजीडीएन का उपयोग करके ज़ूम सक्षम करना चाहता हूं। व्हील कोड इस तरह दिखता है:

movement.y -= ResourceManager.ScrollSpeed * Input.GetAxis("Mouse ScrollWheel"); 

लेकिन पृष्ठ के नीचे और पेज के लिए क्या? और, सामान्य रूप से, मैं कैसे जान सकता हूं कि इस विधि में किन नामों का उपयोग करना है?

उत्तर

9

Input.GetAxis और Input.GetButton (और साथ ही GetButtonDown और GetButtonUp) बस Input manager में परिभाषित आभासी इनपुट अक्ष में से एक की स्थिति को वापस जाएँ।

वापसी मूल्यों को [-1, 1] श्रेणी में होने की आवश्यकता नहीं है। अधिकतर वर्चुअल अक्ष जो पूर्ण मान का प्रतिनिधित्व करते हैं उन्हें -1 और 1 के बीच मान द्वारा दर्शाया जाता है। हालांकि अक्षांश हैं जो पूर्वनिर्धारित "माउसहेल", "माउस एक्स" और "माउस वाई" जैसे रिश्तेदार आंदोलन को वापस करते हैं। वे अंतिम फ्रेम के बाद अक्ष को स्थानांतरित कर चुके राशि को वापस कर देते हैं।

माउसहेल में कुछ अतिरिक्त "समस्याएं" हैं। डेल्टा मूल्य ओएस से लिया जाता है। यदि उपयोगकर्ता ने स्क्रॉल व्हील को "स्क्रॉल यूनिट" प्रति 3 लाइनों को अग्रिम करने के लिए सेट किया है, तो आपको 3 से अधिक के मान प्राप्त होंगे। यदि आप पर्याप्त तेज़ चक्र को स्पिन करने में कामयाब होते हैं तो आपको 3 से अधिक या 3 से छोटे मान मिल सकते हैं।

पेजअप या पेजडाउन के लिए कोई डिफ़ॉल्ट अक्ष नहीं है, हालांकि यदि आप चाहें तो उन्हें जोड़ सकते हैं। लेकिन सावधान रहें, GetAxis वर्चुअल अक्ष की स्थिति वापस कर देगा। इसलिए जब आप सकारात्मक बटन दबाएंगे तो आपको "1" प्राप्त होगा जब तक कि आप बटन को दबाए रखें। यदि आप ईवेंट सुनना चाहते हैं तो आपको GetButtonDown/GetButtonUp का उपयोग करना होगा।

हालांकि यदि आप किसी निश्चित कुंजी को देखना चाहते हैं तो GetKeyDown/GetKeyUp का उपयोग करना आमतौर पर आसान होता है जो KeyCode लेता है।

कुछ की तरह:

if(Input.GetKeyDown(KeyCode.PageUp)) 
    movement.y -= 1; 
if(Input.GetKeyDown(KeyCode.PageDown)) 
    movement.y += 1; 

संपादित
आप सामान्य रूप से उपलब्ध कुंजी नाम पता करने के लिए, Conventional Game Input पेज पर एक नज़र डालें चाहते हैं। नीचे "पेज अप" और "पेज डाउन" सहित सबसे आम कुंजीनामों की एक सूची है। इनपुट प्रबंधक आमतौर पर गलत कुंजी नामों से इनकार करता है। तो यदि आप एक टाइप करते हैं, तो इनपुट फ़ील्ड के लिए फ़ोकस करें और मान रहता है, यह सही है।

यदि आप वर्चुअल अक्ष के नीचे बटन दबाते समय सकारात्मक बटन सेट करते हैं तो "संवेदनशीलता" सेटिंग के आधार पर "धीरे-धीरे" 0 से 1 तक बढ़ जाएगा। संवेदनशीलता एक त्वरण कारक की तरह है। यदि आप बटन को छोड़ देते हैं तो यह "गुरुत्वाकर्षण" मान के आधार पर "धीरे-धीरे" वापस आ जाएगा जो एक मंदी कारक है।

यदि आप एक सकारात्मक और नकारात्मक बटन सेट करते हैं, तो जब आप नकारात्मक बटन दबाते हैं तो धुरी सकारात्मक बटन दबाए जाने पर -1 तक दोनों तरीकों से जा सकती है। यदि "स्नैप" सत्य है तो यह तुरंत 0 पर वापस आ जाएगा यदि आप धीरे-धीरे 0 पर वापस जाने के बजाय विपरीत बटन दबाते हैं और फिर विपरीत दिशा में बढ़ना शुरू करते हैं।

"मृत" मान मृत क्षेत्र को परिभाषित करता है। यदि धुरी का मूल्य मृत से छोटा है (या डीड से बड़ा) इसे 0 के रूप में माना जाएगा। वास्तविक एनालॉग इनपुट उपकरणों के लिए यह महत्वपूर्ण है, जो आमतौर पर उनके आराम की स्थिति के आसपास कुछ जिटर होता है।

शेष गुण जैसे "उलटा", "प्रकार" और दस्तावेज पढ़ने के दौरान किसी को स्पष्ट होना चाहिए।

दो धुरी को उसी नाम से परिभाषित करना संभव है जैसे "क्षैतिज" और "लंबवत" धुरी। एक ही नाम वाले अक्षरों को एक के रूप में माना जाता है।

मुझे लगता है कि अधिकांश इनपुट प्रबंधक सामग्री को कवर करना चाहिए।

+0

नहीं, मैं वास्तव में चाहता हूं कि एकता मेरे लिए अक्ष की गिनती करे, इसलिए जब बटन नीचे था तो ज़ूम के आनुपातिक होगा। –

+0

ओह, कृपया, क्या आप बटन अक्ष के साथ नई धुरी को परिभाषित करने के बारे में विस्तार से बता सकते हैं? मुझे नहीं लगता कि 'सकारात्मक/नकारात्मक बटन' में प्रवेश करना है। –

+0

@ TomášZato: मैंने इनपुट प्रबंधक सेटिंग्स पर कुछ और जानकारी जोड़ दी है। – Bunny83

संबंधित मुद्दे

 संबंधित मुद्दे