สร้าง procedural map แบบสุ่มอย่างง่าย

 







local MapGeneratorPart = script.Parent -- Part ตั้งต้น

MapGeneratorPart.Transparency = 1 -- ให้โปร่งใส

local map = {}
local mapSize = 20
local partSize = 5

-- Function ไว้สร้าง Part แบบสุ่มสี
local function createPart(i, j)
	local newPart = Instance.new("Part")
	newPart.Size = Vector3.new(partSize, partSize, partSize)
	newPart.Position = Vector3.new(i * partSize, partSize, j * partSize)
	newPart.BrickColor = BrickColor.Random()
	return newPart
end

-- เอาไว้เขย่า Part ขึ้นลง ที่แกน Y
local function shake(part)
	part.Position += Vector3.new(0, 5, 0)
	--wait(0.5)
	--part.Position -= Vector3.new(0, 5, 0)
end

-- วนลูป 2 มิติ ixj เพื่อสร้าง Part แล้วนำไปใส่ลง table ในรูปแบบ {{row1_part1, ..}, ...}
for i=1, mapSize do	
	local row = {}
	for j=1, mapSize do
		table.insert(row, createPart(i, j))
	end
	table.insert(map, row)
end

-- หยิบ Part จาก table นำไปใส่ลง workspace
for i, v in ipairs(map) do
	for j, part in ipairs(v) do
		part.Parent = workspace		
	end
end

-- ทำการสุ่มตำแหน่งเพื่อเขย่า
while true do
	wait(0.1)
	local i = math.random(mapSize)
	local j = math.random(mapSize)
	
	task.spawn(function ()
		shake (map[i][j])
	end)
end

ความคิดเห็น