在最后几天,我在这里做了:
https://github.com/PerduGames/SoftNoise-GDScript-
现在我可以生成我的“无限”地图了,但是当玩家在Godot(GDScript)的2D场景中移动时,我在处理其中仅部分地图时遇到了问题。
我正在尝试在tilemap中绘制玩家周围的区域。有了这个功能,我就取了玩家的位置:
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&lt; y,当x == y时,但当x> y,由于这里出现了并发症,即使我检查上面的情况,如果有的话,它会不会按预期绘制:
答案 0 :(得分: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)):