मैं यह पता लगाने की कोशिश कर रहा हूं कि जब मैं "रैंप" और +1 ऊंचाई टाइल्स (नीचे चित्र देखें) तो माउस के नीचे सही "सक्रिय" टाइल कैसे प्राप्त कर सकता हूं।मानचित्र के लिए आइसोमेट्रिक स्क्रीन
जब मेरी दुनिया फ्लैट है, सब कुछ कोई समस्या नहीं काम करता है। एक बार जब मैं +1 कहने की ऊंचाई के साथ टाइल जोड़ता हूं, तो रैंप के साथ +0 पर वापस जाकर, मेरी स्क्रीन -> मैप रूटीन अभी भी दिख रही है जैसे सबकुछ "फ्लैट" है।
उपरोक्त तस्वीर में, हरा "रैंप" असली टाइल है जिसे मैं प्रस्तुत करना चाहता हूं और माउस -> मानचित्र की गणना करना चाहता हूं, हालांकि नीले टाइल को आप नीचे "नीचे" देखते हैं, यह वह क्षेत्र है जो गणना की जाती है। तो यदि आप अपने माउस को किसी भी गहरे हरे रंग के क्षेत्रों में ले जाते हैं, तो ऐसा लगता है कि आप एक और टाइल पर हैं।
यहाँ मेरी नक्शा प्रस्तुत करना है (बहुत सरल)
canvas.width = canvas.width; // cheap clear in firefox 3.6, does not work in other browsers
for(i=0;i<map_y;i++){
for(j=0;j<map_x;j++){
var xpos = (i-j)*tile_h + current_x;
var ypos = (i+j)*tile_h/2+ current_y;
context.beginPath();
context.moveTo(xpos, ypos+(tile_h/2));
context.lineTo(xpos+(tile_w/2), ypos);
context.lineTo(xpos+(tile_w), ypos+(tile_h/2));
context.lineTo(xpos+(tile_w/2), ypos+(tile_h));
context.fill();
}
}
और यहाँ मेरी माउस है -> नक्शा दिनचर्या:
ymouse=((2*(ev.pageY-canvas.offsetTop-current_y)-ev.pageX+canvas.offsetLeft+current_x)/2);
xmouse=(ev.pageX+ymouse-current_x-(tile_w/2)-canvas.offsetLeft);
ymouse=Math.round(ymouse/tile_h);
xmouse=Math.round(xmouse/(tile_w/2));
current_tile=[xmouse,ymouse];
मुझे लगता है मैं फिर से आरंभ करके लागू करने के लिए होगा एक साधारण स्क्रीन की बजाय एक विश्व आधारित मानचित्र प्रणाली -> मानचित्र दिनचर्या।
धन्यवाद।