1 Star 0 Fork 0

kevinlights/rimworldripoff

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Terrain.gd 1.39 KB
一键复制 编辑 原始数据 按行查看 历史
Jake Wilkinson 提交于 2024-04-21 20:43 +08:00 . terrain system, randomly generated
@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))
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/kevinlights/rimworldripoff.git
git@gitee.com:kevinlights/rimworldripoff.git
kevinlights
rimworldripoff
rimworldripoff
master

搜索帮助