通常,軸對齊(旋轉= 0)的地圖很容易遍歷屏幕上的可見瓦片。如何在旋轉後的tilemap中查找屏幕有界的瓦片索引?
但是,如何在整個瓷磚地圖旋轉時「挑選」或篩選瓷磚索引?
注意:這是在ActionScript 3.0(在Genome2D)提高區塊的渲染類,但在其他計算機語言的答案也可以同樣適用! :)
通常,軸對齊(旋轉= 0)的地圖很容易遍歷屏幕上的可見瓦片。如何在旋轉後的tilemap中查找屏幕有界的瓦片索引?
但是,如何在整個瓷磚地圖旋轉時「挑選」或篩選瓷磚索引?
注意:這是在ActionScript 3.0(在Genome2D)提高區塊的渲染類,但在其他計算機語言的答案也可以同樣適用! :)
我不是100%清楚你想要做的每個瓷磚,所以我假設你想找到哪些要渲染,哪些不要。
你可以嘗試建立一個虛擬對象在屏幕上,這樣做:
For each tile in tilemap
if (dummyScreenObj.hitTestObject(tile))
tile.visible = true
else
tile.visible = false
我寧願避免檢查每個瓷磚。我所追求的是一種設置外部和內部for-loop邊界的方法(就像通常用於軸對齊的定向tilemap一樣),但是也可以在傾斜/縮放的tile上迭代。例如,代替使用'for(var c = columnStart; c <= columnEnd; C++)'和'for(var r = rowStart; r <= rowEnd; r ++)',它會迭代for(var sc = slopedColumnStart ; sc <= slopedColumnEnd; sC++)'和'for(var sr = slopedRowStart; sr <= slopedRowEnd; sr ++)',但顯然需要一些數學來計算瓦片索引。這是否更有意義? – bigp 2014-04-30 13:14:10
我不確定你的目標是否可以實現。舉例來說,每行都有不同的數字。這也會隨着旋轉而變化。 例如,現在你有一排2長,然後是4,5,6,6,6,5. – MZA 2014-05-03 00:27:06
如果你不想單獨通過實際的瓷磚,你可以創建一個完整的虛擬副本空mc的映射到真正的瓷磚和測試對這些。 – MZA 2014-05-03 00:29:50
我不漂亮知道你究竟需要,爲「宰殺」,「過濾器」和'查找'是完全不同的東西。無論如何,似乎矩陣會做各種工作,因爲它會旋轉和修改您的輸入值(x,y)。 – 2014-03-27 11:22:34