Altıgen ızgara kullanan bir TBS oyunu üzerinde çalışıyorum. Ancak İzometrik altıgen bir döşeme motorundaki ekran-harita koordinatlarını dönüştürme?
, bunu başarmak için ben değerlerle keman vardı (kiremit boyutu: Ancak, bu (güzel görünüyor ve piksel gösterişli) izometrik olmak istedim ve fayans motoru iyi çalışıyor, bu sonucudur fayansların doğru şekilde takılmasını sağlamak için döşeme algoritması. İşte örnek bir çini:
Karo boyutu 62x32'dir ve döşendiğinde, her döşeme doğru bir şekilde sığdırmak için x üzerinde 47 (cw) ve y (16 (ch)) konumuna getirilir.
Bu koordinatları ben haritadan (fayans çizim için) ekran cordinates hesaplamak nasıl:
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;
}
Şimdi, fayans seçin ve harita ekranından koordinatları elde edebilmek için gereken (fare) koordine eder. Koordinatları bir şekilde dönüştürmenin bile mümkün olup olmadığını anlayamıyorum (bütün girişimlerim başarısız oldu). karoların
seçimi, tabii ki, piksel mükemmel olması gerekir, ama sadece düz kiremitler için (gerek yoktur:
Bu
harita sistemi fayans çizilir nasıl benziyor ve koordinat nedir yukarıdaki karo üzerinde ilerleyen ağaçları seçmek için), böylece algoritma tüm karoların düz olduğunu varsayabilir (örnek olarak verdiğim gibi). Bunun nasıl yapılacağı konusunda herhangi bir fikri var mı? Karo [0,0] 'da ekran boşluğuna dönüştürerek ve işaretçinin içeride olup olmadığını ya da ne kadar uzak olduğunu görerek "kaba kuvvet" yapabilirim, sonra da yavaş yavaş fayansı kaçırana kadar fare koordinatlarını içeren karo (ya da yok bir karo), ancak varsa daha zarif bir çözüm arıyorum.Herhangi bir fikri olan var mı?
Teşekkürler.
+1. – Goles