Decided to try using Roblox EditableMesh instance to simulate ocean waves and then make a buoyancy system. I created a simple plane mesh and used multiple Gerstner waves to “animate” it.
However when i started working on the buoyancy system, i encountered a very weird issue, best described by a “offset” between the Mesh appearance geometry and what i believe to be the Editable Mesh vertices.
Since i was using RenderStepped() at first, i thought it may be a sort of latency issue in the raycasting or something but when i tried to slow down the process and simply set a parts position to a vertex position, the offset remained.
Any ideas? Any help or insight is appreciated.
Video and my dummy debug code below.
local Newpos = nil
for i,Setting in self.Waves do
if Newpos then
Newpos += Gerstner(Position, Setting.Direction :: Vector2, os.clock(), Setting.Speed, Setting.Steepness, Setting.Amplitude, Setting.WaveLength)
else
Newpos = Gerstner(Position, Setting.Direction :: Vector2, os.clock(), Setting.Speed, Setting.Steepness, Setting.Amplitude, Setting.WaveLength)
break
end
end
if Newpos == nil then
return
end
self.OceanMesh:SetPosition(vertex[1], Newpos)
if j == 1 and i == 1 then
local part = Instance.new("Part", workspace)
part.Size = Vector3.new(1,1,1)
part.Position = self.MeshPart.CFrame:PointToWorldSpace(Newpos)
part.Anchored = true
part.BrickColor = BrickColor.Red()
game:GetService("Debris"):AddItem(part, 0.1)
end