Нарисуйте плитку вокруг игрока
В последние дни я сделал это здесь:
https://github.com/PerduGames/SoftNoise-GDScript-
и теперь я могу генерировать свои "бесконечные" карты, однако у меня есть проблемы, связанные с генерацией только его частей, когда игрок перемещается в 2D-сценарии в Godot(GDScript).
Я пытаюсь нарисовать область вокруг игрока в тайлекарте. С помощью этой функции я беру позицию игрока:
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
1 ответ
Как правильно обрабатывать сравнение с Vector2?
Я смог найти ответ на этот случай, ответил на другом форуме, сравнивая Vector2, было бы не лучшим способом сделать это, используя Rect2 (получите два Vector2, первый параметр - позиция, а второй - размер), который вы можете проверить. если игрок находится внутри коробки, то происходит следующий код:
https://godotengine.org/qa/17982/how-to-compare-two-rect2?show=17994
#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)):