Modify roblox physics

Is it possible for me to remove the bouncing, rolling and knockback from these parts although still be able to drop the item? I would turn off CanCollide, although if I do that it will simply pass through the floor. I would also turn on Anchoring although that would stop the part from falling to the ground in the first place. Someone please help!

1 Like

There is a thing called CustomPhysicalProperties, its in the part properties, it could probably help you with stopping the bounching but i dont think you can stop the ball from rolling, Idk just mess around with these properties

1 Like

Try using a raycast from the item straight down. When the raycast indicates the item touched the ground then Anchor it.
You could use the Touched event when the item hits the ground, but Touched can be unreliable.

How do raycasts work? I haven’t heard of them in studio before. My initial plan was to use the Touched event, however I realised if the part were to come in contact with a wall, or something of the sort it’d anchor on there as well.

Thanks! It helps with the player collision, however the part will still roll when being dropped regardless. Which is not ideal considering items should hardly have any physics at all within the game.

As always, go to create.roblox.com and use the Search tool with the term “raycast”. You’ll find plenty of info there.

Also, is this a flat baseplate game, or is the ground at multiple levels?
If it’s flat then just anchor the items when they get to whatever Y value indicates they are on the ground.

At the moment the game is flat, however I’m planning to add a map in the future so I don’t believe that will be an option. Thanks for the help though, I’ll try it out!

Hey, I tried something with raycasts however it does not seem to be working. For whatever reason it always prints that the floor is being touched. Would you happen to know what’s wrong?

local function isTouchingFloor(part)
	local raycastParams = RaycastParams.new()
	raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
	raycastParams.FilterDescendantsInstances = {part}

	local raycastResult = workspace:Raycast(part.Position, Vector3.new(0,-1,0), raycastParams)

	return raycastResult ~= nil
end

while true do
	for _, item in ipairs(itemsFolder:GetChildren()) do
		if isTouchingFloor(item) then
			print(item.Name .. " is touching the floor!")
		else
			print(item.Name .. "IS NOT TOUCHING FLOOR")
		end
	end
	wait(1)
end

But are some items already on the floor, or is it printing that all the items are on the floor?

Is itemsFolder in the player, the backpack or somewhere else.
Try printing the Position of the item in the print statements so you can see where the actual item is that the Raycast is being sent from.

You could also anchor the blocks when they touch the ground

and btw to stop urself from being able to fling the blocks you could use collision groups

(both not the best methods but they also work)

The folder is in the workspace! And it should be printing for each item individually. But yeah, I’ll try that. Thanks for all of your help so far.

I’ve heard of Collision Groups, although I was too stupid to figure out how to use them lol. And again, I did want to try anchoring blocks as they touched the ground- However, using the “Touched” event, when dropping an item it would anchor itself onto a wall, or any other items it’d come into contact with. Thanks for the suggestion, however!

1 Like