What has Roblox done with the Physics this time?

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()).

Might post pics or a video, if I can get one.

Edit: was able to upload this on in 720p :smiley:

you can skip to 30

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.

This seems to be a Bug now, so if a mod could move this thread to Bug Reports that would be great :wink:

We are looking into this issue and will get it resolved ASAP.

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.

Please do this bug is ruining my games.

1 Like

My game is pretty much unplayable with this bug, needs to be fixed sooner than ASAP

I believe this is the reason my racecar isn’t working. I can’t 100% confirm this is the reason it won’t work because I made it after the update.

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 will revert some changes today and then this bug should be addressed. I’ll let you know once the work is done.

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.

Yea that must of been it, it doesn’t happen anymore. Works fine now.

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.

Edit: seems to be studio only :?

Yay now jumping is really broken at my game!

not to mention trying to make a ice rink with skates on is impossible.

After destroying the weld, try cframing it back to it’s correct cframe before shooting it. This usually works for me.

Why did they even change this now sliding is worse in my game… I don’t want players to slide on bricks as if its ice revert it back to old please.

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)