2017-09-09 86 views
0

在過去的日子裏,我確實在這裏:塗料tilemap的各地玩家

https://github.com/PerduGames/SoftNoise-GDScript-

,現在我可以生成我的「無限」的地圖,但是我有對付它的唯一部件的生成問題隨着玩家在Godot(GDScript)中的2D場景中移動。

我正在試圖在地圖上繪製玩家周圍的區域。有了這個功能,我把球員的位置:

func check_posChunk(var _posChunk, var _posPlayer): 

var pos = $"../TileMap".world_to_map(_posPlayer) 

for i in range(0, mapSize, 16): 
    if pos >= Vector2(i, i) && pos <= Vector2(i + 16, i + 16): 
     if pos.x > pos.y: 
      _posChunk = Vector2(i, i) - Vector2(32, 48) 
     else: 
      _posChunk = Vector2(i, i) - Vector2(16, 16)   
     break 
return _posChunk 

,我存儲在變量「posChunk」的位置,畫在這裏:

func redor(var posPlayer): 

posChunk = check_posChunk(posChunk, posPlayer) 

for x in range(64): 
    for y in range(64): 
     $"../TileMap".set_cell(posChunk.x + x, posChunk.y + y, biomes(elevation_array[posChunk.x + x][posChunk.y + y], umidade_array[posChunk.x + x][posChunk.y + y])) 

我周圍的玩家油漆當x < y,當x == y時,但當x> y時,併發症發生,由於這裏這裏,即使我檢查上面的情況,如果,有些情況下它不會如預期那樣繪製:

https://github.com/godotengine/godot/issues/9284

回答

0

如何正確處理Vector2比較?

我能找到答案這種情況下,回答了在另一個論壇,比較Vector2不會做到這一點的最好辦法,用RECT2(得到兩個Vector2,第一個參數是位置和第二大小),您可以檢查,如果玩家是在一個盒子裏,所以下面這段代碼發生:

https://godotengine.org/qa/17982/how-to-compare-two-rect2?show=17994#c17994

#Verify that the pos that is the player's position 
#is inside the rect_chunk rectangle with the has_point function of Rect2. 

var rect_chunk = Rect2(Vector2(i, i), Vector2(16, 16)) 
if(rect_chunk).has_point(pos)):