You can write your topic however you want, but you need to answer these questions:
-
So im working on a pet follow system and I want it to be server sided so everyone can see eachothers pets since I dont want it to just be client sided.
-
The issue is the pets movement is jittery and weird as it shows in the (Video Below)
robloxapp-20230730-1941067.wmv (60.0 KB)
3.Here is my script
local Players = game:GetService("Players")
local function getXAndZPositions(angle, radius)
local x = math.cos(angle) * radius
local z = math.sin(angle) * radius
return x, z
end
local function setupCircularMovement(character)
local hrp = character:WaitForChild("HumanoidRootPart")
local parts = {}
local numberOfParts = 8
for _ = 1, numberOfParts do
local part = Instance.new("Part")
part.Anchored = true
part.CanCollide = false
part.Parent = workspace
table.insert(parts, part)
end
local fullCircle = 2 * math.pi
local radius = 10
local initialHeights = {}
for i, _ in ipairs(parts) do
initialHeights[i] = parts[i].Position.Y
end
local lastTime = tick()
local step = 0.02
local offset = 0
game:GetService("RunService").Heartbeat:Connect(function()
local currentTime = tick()
local deltaTime = currentTime - lastTime
lastTime = currentTime
offset = offset + step * deltaTime
local currentPosition = hrp.Position
for i, part in pairs(parts) do
local angle = i * (fullCircle / #parts) + offset
local x, z = getXAndZPositions(angle, radius)
local targetPosition = currentPosition + Vector3.new(x, 0, z)
local targetHeight = initialHeights[i] + 0.2 * math.sin(currentTime * 2) -- Slower bounce effect
targetPosition = targetPosition + Vector3.new(0, targetHeight, 0)
part.CFrame = CFrame.new(targetPosition)
end
end)
end
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
setupCircularMovement(character)
end)
end)
for _, player in ipairs(Players:GetPlayers()) do
if player.Character then
setupCircularMovement(player.Character)
end
end
There is the script. Thanks to anyone who helps!