代码拉取完成,页面将自动刷新
@tool
extends TileMap
@export var generateTerrain : bool
@export var clearTerrain : bool
@export var mapWidth : int
@export var mapHeight : int
@export var terrainSeed : int
@export var grassThreshold : float
@export var grass2Threshold : float
@export var dirtThreshold : float
@export var rockThreshold : float
# Called when the node enters the scene tree for the first time.
func _ready():
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if generateTerrain:
generateTerrain = false
GenerateTerrain()
if clearTerrain:
clearTerrain = false
clear()
func GenerateTerrain():
print("Generating Terrain...")
var noise = FastNoiseLite.new()
noise.noise_type = FastNoiseLite.TYPE_CELLULAR
var rng = RandomNumberGenerator.new()
if terrainSeed == 0:
noise.seed = rng.randi()
else:
noise.seed = terrainSeed
for x in range(mapWidth):
for y in range(mapHeight):
if noise.get_noise_2d(x, y) > grassThreshold:
set_cell(0, Vector2i(x, y), 0, Vector2i(0,0))
elif noise.get_noise_2d(x, y) > grass2Threshold:
set_cell(0, Vector2i(x, y), 0, Vector2i(1,0))
elif noise.get_noise_2d(x, y) > dirtThreshold:
set_cell(0, Vector2i(x, y), 0, Vector2i(2,0))
elif noise.get_noise_2d(x, y) > rockThreshold:
set_cell(0, Vector2i(x, y), 0, Vector2i(3,0))
else:
set_cell(0, Vector2i(x, y), 0, Vector2i(0,1))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。