2013-04-22 31 views
3

通常,軸對齊(旋轉= 0)的地圖很容易遍歷屏幕上的可見瓦片。如何在旋轉後的tilemap中查找屏幕有界的瓦片索引?

但是,如何在整個瓷磚地圖旋轉時「挑選」或篩選瓷磚索引?

enter image description here

注意:這是在ActionScript 3.0(在Genome2D)提高區塊的渲染類,但在其他計算機語言的答案也可以同樣適用! :)

+0

我不漂亮知道你究竟需要,爲「宰殺」,「過濾器」和'查找'是完全不同的東西。無論如何,似乎矩陣會做各種工作,因爲它會旋轉和修改您的輸入值(x,y)。 – 2014-03-27 11:22:34

回答

0

我不是100%清楚你想要做的每個瓷磚,所以我假設你想找到哪些要渲染,哪些不要。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestObject()

你可以嘗試建立一個虛擬對象在屏幕上,這樣做:

For each tile in tilemap 
    if (dummyScreenObj.hitTestObject(tile)) 
     tile.visible = true 
    else 
     tile.visible = false 
+0

我寧願避免檢查每個瓷磚。我所追求的是一種設置外部和內部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

+0

我不確定你的目標是否可以實現。舉例來說,每行都有不同的數字。這也會隨着旋轉而變化。 例如,現在你有一排2長,然後是4,5,6,6,6,5. – MZA 2014-05-03 00:27:06

+0

如果你不想單獨通過實際的瓷磚,你可以創建一個完整的虛擬副本空mc的映射到真正的瓷磚和測試對這些。 – MZA 2014-05-03 00:29:50