Skip to content

Commit d7998a5

Browse files
authored
Optimization of Collision Group Script (#984)
## Changes I've optimized the script for handling collision groups in Roblox. The main change involves removing the connection to DescendantAdded, applying the collision group immediately to all parts in the model upon character addition. This reduces unnecessary event connections, improving performance by applying the collision group once for all descendants, rather than repeatedly when new parts are added. This should help improve game performance, especially when handling many parts or players. ## Checks By submitting your pull request for review, you agree to the following: - [x] This contribution was created in whole or in part by me, and I have the right to submit it under the terms of this repository's open source licenses. - [x] I understand and agree that this contribution and a record of it are public, maintained indefinitely, and may be redistributed under the terms of this repository's open source licenses. - [x] To the best of my knowledge, all proposed changes are accurate. ---------
1 parent 9ee784e commit d7998a5

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

content/en-us/workspace/collisions.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -262,27 +262,27 @@ interesting but unintended gameplay, such as characters jumping on top of each o
262262
local PhysicsService = game:GetService("PhysicsService")
263263
local Players = game:GetService("Players")
264264

265-
PhysicsService:RegisterCollisionGroup("Characters")
266-
PhysicsService:CollisionGroupSetCollidable("Characters", "Characters", false)
267-
268-
local function onDescendantAdded(descendant)
269-
-- Set collision group for any part descendant
270-
if descendant:IsA("BasePart") then
271-
descendant.CollisionGroup = "Characters"
265+
local CollisionGroupName = "Characters"
266+
PhysicsService:RegisterCollisionGroup(CollisionGroupName)
267+
PhysicsService:CollisionGroupSetCollidable(CollisionGroupName, CollisionGroupName, false)
268+
269+
local function setCollisionGroup(model)
270+
-- Apply collision group to all existing parts in the model
271+
for _, descendant in model:GetDescendants() do
272+
if descendant:IsA("BasePart") then
273+
descendant.CollisionGroup = CollisionGroupName
274+
end
272275
end
273276
end
274277

275-
local function onCharacterAdded(character)
276-
-- Process existing and new descendants for physics setup
277-
for _, descendant in character:GetDescendants() do
278-
onDescendantAdded(descendant)
279-
end
280-
character.DescendantAdded:Connect(onDescendantAdded)
281-
end
282-
283278
Players.PlayerAdded:Connect(function(player)
284-
-- Detect when the player's character is added
285-
player.CharacterAdded:Connect(onCharacterAdded)
279+
player.CharacterAdded:Connect(function(character)
280+
setCollisionGroup(character)
281+
end)
282+
-- If the player already has a character, apply the collision group immediately
283+
if player.Character then
284+
setCollisionGroup(player.Character)
285+
end
286286
end)
287287
```
288288

@@ -360,4 +360,4 @@ The `Class.TriangleMeshPart.CollisionFidelity|CollisionFidelity` property has th
360360
To view collision fidelity in Studio, toggle on **Collision fidelity** from the [Visualization Options](../studio/ui-overview.md#visualization-options) widget in the upper‑right corner of the 3D viewport.
361361
</Alert>
362362

363-
For more information on the performance impact of collision fidelity options and how to mitigate them, see [Performance Optimization](../performance-optimization/improving.md#physics-computation). For an in‑depth walkthrough on how to choose a collision fidelity option that balances your precision needs and performance requirements, see [here](../tutorials/environmental-art/assemble-an-asset-library.md#collisionfidelity).
363+
For more information on the performance impact of collision fidelity options and how to mitigate them, see [Performance Optimization](../performance-optimization/improving.md#physics-computation).

0 commit comments

Comments
 (0)