I'm working on a game where random disasters are generated through a module script, and I'm currently making a flood. However, since the touch event isn't quite the best for this, I am considering region3. I want to make the size of the region3 rise every 2 seconds, however, I can't seem to add a Vector3 to the Region3. I have one error in the output.
Disasters (Module script):
> local TweenService = game:GetService("TweenService") > local RoundEnded = game.ReplicatedStorage.RoundEnded > local Disaster = {} > Disaster.__index = Disaster > > function Disaster.new(DisasterType) > local self = {} > setmetatable(self, Disaster) > self.DisasterType = DisasterType > > > if self.DisasterType == "Flood" then > local floodRegion = Region3.new(workspace.Baseplate.Position - (workspace.Baseplate.Size/2), workspace.Baseplate.Position + (workspace.Baseplate.Size/2)) > self.Flood = Instance.new("Part") > self.Flood.Position = workspace.Baseplate.Position + Vector3.new(0,0.5,0) > self.Flood.Size = floodRegion.Size > self.Flood.Name = "Flood" > self.Flood.Anchored = true > self.Flood.CanCollide = false > self.Flood.Transparency = 1 > self.Flood.Parent = workspace > > for round = 30, 1, -1 do > floodRegion.Size += Vector3.new(0,1,0) > self.Flood.Size = floodRegion.Size > workspace.Terrain:FillBlock(self.Flood.CFrame, self.Flood.Size, Enum.Material.Water) > if self.Flood.Size.X > 18 then > print("1") > end > wait(2) > end > > end > return self > end > > function Disaster:GetDisaster() > local disasters = {"Flood"} > local rng = math.random(1,#disasters) > > if rng == 1 then > Disaster.new(disasters[1]) > return disasters[1] > end > > return disasters > end > > function Disaster:RemoveDisaster() > self.Parent = nil > end > > return Disaster >
Error message:
Size cannot be assigned to - Server - Disasters:24
As always, thank you for your time and I appreciate any help.
I don't know if there's a better way to do it other than to apply the size to the "flood" part and recalculate the region. Keep on trying to find better info tho, as I do not know if this is the best way to do it.
local floodRegion = Region3.new(workspace.Baseplate.Position - (workspace.Baseplate.Size/2), workspace.Baseplate.Position + (workspace.Baseplate.Size/2)) self.Flood = Instance.new("Part") self.Flood.Position = workspace.Baseplate.Position + Vector3.new(0,0.5,0) self.Flood.Size = floodRegion.Size self.Flood.Name = "Flood" self.Flood.Anchored = true self.Flood.CanCollide = false self.Flood.Transparency = 1 self.Flood.Parent = workspace for round = 30, 1, -1 do self.Flood.Size += Vector3.new(0, 1, 0) self.Flood.Position += Vector3.new(0, 0.5, 0) floodRegion = Region3.new(workspace.Baseplate.Position - (workspace.Baseplate.Size/2), workspace.Baseplate.Position + (workspace.Baseplate.Size/2)) workspace.Terrain:FillBlock(self.Flood.CFrame, self.Flood.Size, Enum.Material.Water) if self.Flood.Size.X > 18 then print("1") end wait(2)
Please let me know if this works properly, as I haven't tested it.
Hopefully I helped as much as I could.