2011-07-07 7 views
11

मैं एक टीबीएस गेम पर काम कर रहा हूं जो हेक्सागोनल ग्रिड का उपयोग करता है। एक आइसोमेट्रिक षट्भुज टाइलिंग इंजन में स्क्रीन-टू-मैप निर्देशांक को बदलना?

हालांकि, इस लक्ष्य को हासिल करने के लिए मैं मूल्यों के साथ बेला के लिए किया था (टाइल का आकार: हालांकि, मैं यह सममितीय होने के लिए (अच्छा लग रहा है और पिक्सेल आर्टि) चाहते थे, और खपरैल इंजन में अच्छी तरह से काम करता है, यह परिणाम है , टाइलिंग एल्गोरिदम) टाइल्स को सही ढंग से फिट करने के लिए। यहां एक उदाहरण टाइल है:

टाइल का आकार 62x32 है, और जब टाइल किया जाता है, तो प्रत्येक टाइल को एक्स पर 47 (सीडब्ल्यू) और 16 (सी) सही ढंग से फिट करने के लिए स्थानांतरित किया जाता है।

यह कैसे मैं स्क्रीन cordinates नक्शे से (टाइल ड्राइंग के लिए) की गणना निर्देशांक है:

function toScreen(x, y, z, offset) 
{ 
    offset = ifndef(offset, {x: 0, y: 0}); 
    var ret = new Vector2D(y*Tile.cw + x*Tile.cw -offset.x, -x*Tile.ch + y*Tile.ch -offset.y -z*16); 
    ret.y += (Tile.height*this.h)/2; //center the map on screen 
    return ret; 
} 

अब, मैं टाइल का चयन करें, और नक्शा स्क्रीन से निर्देशांक प्राप्त करने में सक्षम होने की जरूरत है (चूहा) समन्वय करता है। मैं समझ नहीं पा रहा हूं कि किसी भी तरह से निर्देशांक को बदलने के लिए भी संभव है (मेरे सभी प्रयास विफल हुए)।

टाइल्स के चयन, होगा निश्चित रूप से, पिक्सेल सही होना जरूरी है, लेकिन सिर्फ फ्लैट टाइल के लिए (की जरूरत नहीं है:

यह वही नक्शा समन्वय प्रणाली की तरह लग रहा है और कैसे टाइल तैयार कर रहे हैं है उपरोक्त टाइल पर जाने वाले पेड़ों का चयन करने के लिए), इसलिए एल्गोरिदम यह मान सकता है कि सभी टाइल्स फ्लैट हैं (जैसा कि मैंने एक उदाहरण के रूप में दिया है)। क्या किसी को यह कैसे करना है इस पर कोई विचार है? मैं टाइल को [0,0] पर स्क्रीन स्पेस में बदलकर, "पॉइंट-बल" कर सकता था, और देख रहा था कि पॉइंटर इसमें है या कितना दूर है, फिर धीरे-धीरे टाइल-बाय-टाइल चल रहा है जब तक मुझे कोई नहीं मिल जाए टाइल जिसमें माउस निर्देशांक (या कोई टाइल नहीं है) शामिल है, लेकिन यदि कोई मौजूद है, तो मैं एक और अधिक सुरुचिपूर्ण समाधान की तलाश में हूं।

क्या किसी के पास कोई विचार है?

धन्यवाद।

+1

+1। – Goles

उत्तर

7

हेक्सागोनल ग्रिड के बारे में गहराई से उपचार के लिए इस लेख पर एक नज़र डालें: http://playtechs.blogspot.com/2007/04/hex-grids.html

वहाँ कैसे हेक्सागोनल निर्देशांक के लिए आयताकार निर्देशांक परिवर्तित करने के लिए पर एक अनुभाग है। आप नियमित रूप से हेक्सागोन में अपने हेक्सागोन को परिवर्तित करने के लिए एक अतिरिक्त एफ़िन रूपांतरण जोड़कर अपने "आइसोमेटिक हेक्सागोन टाइलिंग" में अपनी विधि को आसानी से अनुकूलित कर सकते हैं। अच्छे संरचित प्रश्न के लिए

+0

मैं इस तरह कुछ ढूंढ रहा था, लेकिन इसे नहीं मिला। यह थोड़ा अस्पष्ट है, लेकिन यह काफी अच्छी तरह से समझाया गया है। आपका बहुत बहुत धन्यवाद :) – fingerprint211b

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