Not much else to explain here. However I do have a local script that disables movement and one that teleports players. Other than that, I am completely baffled.
Here are the images of example: From First Player’s Point of View
Weirdly enough it has, although it shouldnt be altering that. I think after I reset my character the issue resolved and hasn’t come back even after rejoining the game.
Here are the two scripts (simplified) I disabled:
local PlayerModule = require(playerScripts:WaitForChild("PlayerModule"))
local Controls = PlayerModule:GetControls()
Controls:Disable()
Controls:Disable() doesn’t just stop player input, it also interferes with how the character movement and state are replicated to other players. That’s why new players appear invisible. Resetting fixed it because the character was rebuilt by the server without being affected by that LocalScript.
You could try disabling movement this way:
local ContextActionService = game:GetService("ContextActionService")
local function blockAction(actionName, inputState, inputObject)
return Enum.ContextActionResult.Sink
end
-- Disable movement
ContextActionService:BindAction("DisableMovement", blockAction, false,
Enum.KeyCode.W, Enum.KeyCode.A, Enum.KeyCode.S, Enum.KeyCode.D,
Enum.KeyCode.Space
)
After a quick test I can now move and not see the other character either. I know it’s updated because I turned back on the no character reset script as well and it is working just fine. I am quite confused because what you provide is very straight forward.
So I’ve found that the problem is in my teleport script on the server side. While the character can still move at least it’s not the pressing issue.
This is the teleport function:
local function migratetoroom(room, player)
local part = PositionParts:FindFirstChild(room)
local char = player.Character or player.CharacterAdded:Wait()
char.HumanoidRootPart.Position = part.Position
end
It is called as soon as the first player loads into the game, and can be called after. However only the first time it is called the bug happens. Any ideas?
I don’t know if this is the problem, but you shouldn’t set the position of the HumanoidRootPart. instead, you should do this:
local function migratetoroom(room, player)
local part = PositionParts:FindFirstChild(room)
local char = player.Character or player.CharacterAdded:Wait()
char:PivotTo(part.CFrame)
end
edit: also I want to ask, is there more inside both of the scripts? maybe that’s causing the issue
Nope that was the solution, it works flawlessly. The only other problem on this forum I have to tackle is the disable movement script. But that isn’t nearly as much of a problem as what you’ve helped with. Thank you!
I’ve also changed the title to help people find this who have the same issue.