यह पता लगाना कि माउस किस टाइल पर क्लिक करता है


9

मैं एक आइसोमेट्रिक ग्रिड आधारित गेम पर काम कर रहा हूं और एक समस्या है जो उपयोगकर्ता से माउस क्लिक को टाइल से जोड़ने की कोशिश कर रहा है। मैं समस्या को 2 भागों में विभाजित करने में सक्षम हूं:

  • एक आयताकार खोजना जो एक टाइल को घेरता है (जो मैं करने में सक्षम था)
  • आयत से यह पता लगाना कि किस टाइल में क्लिक किया गया है (मुझे स्टंप हो गया है)

यहाँ एक टाइल पर आयत का उदाहरण दिया गया है:

टाइल्स वाली आयत

आयत 70px लंबी और 30px ऊंची है इसलिए अगर मैं 30x (शीर्ष) / 20y (बाएं) के इनपुट का उपयोग करता हूं तो मैं यह निर्धारित करने के बारे में कैसे जाऊंगा कि यह किस टाइल में गिर गया?


3
संभावित डुप्लिकेट: gamedev.stackexchange.com/questions/12362/…
thedaian

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

जवाबों:


8

आपके द्वारा x दिशा में किए गए प्रत्येक चरण के लिए आप 35x बाएँ और -15px अपने कैनवास तक ले जाएँगे;

प्रत्येक दिशा में आप y दिशा में बनाते हैं, आप -35px बाएँ और -15px अपने कैनवास तक जाएँगे;

टाइल से कार्टेशियन

इसका मतलब है कि आप अपने टाइल समन्वय प्रणाली को पिक्सेल में आसानी से बदल सकते हैं:

(x, y) => (35 · x, -15 · x) + (-35 · y, -15 · y) = (35 · x - 35 · y, -15 · x - 15 · y) = ( XPX, Ypx)

आपको उस व्युत्क्रम समस्या को हल करना है जिसे आप Xpx और Ypx को जानते हैं और आप x और y (टाइल के समन्वय में) जानना चाहते हैं।

Xpx = 35 · x - 35 · y;

Ypx = -15 · x - 15 · y;

क्या आप इसे हल कर सकते हैं?

x = 1/70 · Xpx - 1/30 · Ypx

y = -1 / 70 · Xpx - 1/30 · Ypx

स्पष्ट रूप से आपके पास सामान्य मामले में गैर पूर्णांक मान होंगे: दोनों x और y की छत लेना आपको पूरी टाइल का समन्वय देगा।


आयत 70px लंबी है, फिर कदम 35px है और 30px नहीं (क्षैतिज में)
CeeJay
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.