In my game I use welds to stick a puck to a players stick and when they shoot it breaks the weld and adds a BodyVelocity to it.
Everything has worked fine until Thursdays Mornings Update. Now it sometimes (30-60%) the puck will teleport randomly to the spot where it was first welded to the stick then apply the force, or it will just teleport to random spot on the ice.
ex. if I pick the puck up at center ice i.e. weld the puck to the stick, then skate into zone and shoot, the puck will teleport back to center ice when the weld is broken (:Destroyed()).
I’ve also had this issue. I’ve been welding a .2, .2, .2 part to the players torso, sometimes they are teleported to an absolutely random position altogether, which I think is due to velocity of the player before hand. I’ve had to allow noclippers back in-game since it’s killing other players sometimes on loop
This may explain why my transport hub has been screwed up recently, it welds the trains to the track when the train gets to the elevator, and people are PMing me saying that section broke.
Thanks. The big fan at Innovation Labs in the first room is broken aswell after 2 years of working fine, it will randomly spin of it’s axis for no reason then snap back. It uses Body Position and Angular velocity.
Can we get a Status Report on this bug? Have you guys found the cause? Have you found a fix? Is there anything more you need from me? I would like this bug fixed very soon, my game is really competitive and this bug can screw a team over very badly.
I’ve also noticed that Collision Physic are kinda bugged as well, for example to detect if a puck goes out of play I have invisible barriers surrounding the outside part of the boards, which the boards are 3 studs thick, yet sometimes when the puck strikes the boards it will say its gone out of play, This has only started happening after the Thursday’s update, also The Physics seem to be off between Clients and/or Server. Example, On my screen and others the puck struck the goalies pad and bounced away from the goal, yet on a few others screens the puck went between the goalies legs and in. Yet, from my screen the puck teleported into the goal after it clearly bounced off the pads and started heading in the opposite direction.
We have disabled the optimization which likely to be the culprit. If you start new games you should not see this bug anymore. So the safest way is to shutdown all running game instances. Please let me know if you still see the issue with new games. Thanks for your patience.
With the recent Drag and Explosions Update I’ve noticed this bug has come back. It’s the same thing as in the OP video where it moves the object back to where it was first welded to a part when the weld is broken/Destroy()'ed. It still happens randomly like before, but not as much as last time it seems.
Yeah… I don’t see that happening, ever. And I do love how players keep jumping on the “It doesn’t work within the first five seconds, undo undo undo” bandwagon - not meaning to be rude or anything.
The sliding you are seeing is from momentum of a faster character (normally seen when the walkspeed is increased). While this is more physically accurate, we understand that it is not desired behavior in some games. We are working on a fix that will work with the current physics system (as opposed to reverting). In the meantime, I have written a local script which approximates the old movement at high walkspeeds. It may need some modifications for your specific games, but hopefully it may help while we search for a better solution:
local player = game.Players.LocalPlayer
while not player.Character do wait() end
local inputState = {w = false, s = false, a = false, d = false}
function changeDirection(direction)
local velocity = player.Character.Torso.Velocity
local cframe = game.Workspace.CurrentCamera.CoordinateFrame
local desired = cframe:vectorToWorldSpace(direction)
desired = Vector3.new(desired.X, 0, desired.Z)
desired = desired / desired.magnitude
player.Character.Torso.Velocity = desired * velocity.Magnitude
end
local userInputService = game:GetService("UserInputService")
userInputService.InputBegan:connect(function(input)
if(player.Character.Humanoid:GetState().Value == 8 or player.Character.Humanoid:GetState().Value == 10) then
if input.KeyCode == Enum.KeyCode.S then
changeDirection(Vector3.new(0,0,1))
inputState.s = true
elseif input.KeyCode == Enum.KeyCode.W then
changeDirection(Vector3.new(0,0,-1))
inputState.w = true
elseif input.KeyCode == Enum.KeyCode.A then
changeDirection(Vector3.new(-1,0,0))
inputState.a = true
elseif input.KeyCode == Enum.KeyCode.D then
changeDirection(Vector3.new(1,0,0))
inputState.d = true
end
end
end)
userInputService.InputEnded:connect(function(input)
if(player.Character.Humanoid:GetState().Value == 8 or player.Character.Humanoid:GetState().Value == 10) then
if input.KeyCode == Enum.KeyCode.S then
inputState.s = false
elseif input.KeyCode == Enum.KeyCode.W then
inputState.w = false
elseif input.KeyCode == Enum.KeyCode.A then
inputState.a = false
elseif input.KeyCode == Enum.KeyCode.D then
inputState.d = false
end
if not inputState.s and not inputState.w and not inputState.a and not inputState.d then
player.Character.Torso.Velocity = Vector3.new(0,0,0)
end
end
end)