2017-09-09 12 views
0

周りのタイルマップペイント:は、私はここでそれをやった最後の日ではプレイヤー

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

、今私は、しかし、私は問題は一部のみの世代を扱ってきた、私の「無限」のマップを生成することができますプレイヤーがGodot(GDScript)の2Dシナリオで動くにつれて、

私は、プレーヤーの周りの領域を、タイルマップにペイントしようとしています。この機能により、私は、プレイヤーの位置を取る:

私は「posChunk」変数に位置を保存し、私はここに描く
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 

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比較を正しく処理する方法は?

私はこの場合の答えを見つけることができたが、(最初のパラメータが位置している、2ベクトル2を取得するベクトル2がRECT2を使用して、これを行うための最善の方法ではないでしょう比較し、別のフォーラムで答え第2のサイズ)プレイヤーがボックス内にあるかどうかをチェックすることができますので、このコードは以下起こる:

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)): 
関連する問題