एक एफपीएस में माउस का उद्देश्य


38

मैं एक फर्स्ट पर्सन शूटर बनाना चाहता हूं और माउस के साथ कैमरा ले जाना चाहता हूं। समस्या यह है कि जब कर्सर स्क्रीन की सीमा तक पहुंच जाता है, तो कैमरा अब चालू नहीं होगा। मैं माउस को कैसे केंद्रित रख सकता हूं और उसकी गतिविधियों का पता लगा सकता हूं?


3
यह एक बड़ा सवाल है।
कम्युनिस्ट डक

जवाबों:


39

क्लासिक Win32 प्रोग्रामिंग में इसे संभालने के लिए सामान्य दृष्टिकोण प्रत्येक फ्रेम पर माउस डेल्टा को पकड़ना है, और फिर स्क्रीन के केंद्र में माउस की स्थिति को रीसेट करना है। आप माउस कर्सर को भी अदृश्य बनाना चाहते हैं, जाहिर है, अन्यथा चीजें बदसूरत दिखती हैं।

आप एक्सएनए में एक ही काम कर सकते हैं, आप बस थोड़ा अलग इंटरफ़ेस के साथ काम करते हैं। तो आप ऐसा कुछ कर सकते हैं:

  1. स्टार्टअप पर, माउस की स्थिति को Mouse.SetPosition के साथ अपनी स्क्रीन के केंद्र पर सेट करें
  2. स्टार्टअप पर भी, माउस को अदृश्य बनाएं
  3. हर इनपुट फ्रेम, वर्तमान माउस स्थिति को पकड़ो
  4. चूंकि आपको पता है कि माउस केंद्र में था, आप दोनों आयामों में डेल्टा आंदोलन की गणना करने के लिए चरण # 3 में पुनर्प्राप्त किए गए माउसस्टैट ऑब्जेक्ट से वर्तमान एक्स और वाई मूल्यों का उपयोग कर सकते हैं । आप इन डेल्टास को अपने गेम लॉजिक के बाकी हिस्सों में फीड कर सकते हैं, जैसे (आपके मामले में) कैमरा कोड।
  5. अगले फ्रेम पर जाने से पहले स्क्रीन के केंद्र में माउस को रीसेट करें।

संपादित करें: इसके अलावा, यहां एक ट्यूटोरियल है जिसे मैंने "एक्सएनए रिश्तेदार माउस इनपुट" (जो आप पूछ रहे हैं) के लिए Google खोज के माध्यम से खोदा है। यह थोड़ा पुराना है, मुझे लगता है, इसलिए कुछ तरीकों से उनके नाम बदल गए होंगे, लेकिन अवधारणाएं अभी भी लागू होनी चाहिए।

EDIT 2: कहने का अर्थ है "इसे Win32 में संभालना " और न कि "इसे हैंडल करना Win32 है," तदनुसार अपडेट किया गया।


आपका बहुत बहुत धन्यवाद। यही वह है जिसकी तलाश में मैं हूं! ;)
ब्लैकबियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.