The problem could be that certain platforms aren’t changing its collidable property because they are out of the player’s loaded area. To see if this is the case, try changing workspace’s property StreamingEnabled to false (temporarily) and see if you’re still encountering this issue. If this fixes it, we can look for a more permanent fix.
Maybe it’s the Platforms table not having those parts? Or maybe not all the platforms’s names are Teal? Also, instead of doing Platforms[i], just use v(from the for i, v)
Generally speaking, it’s best to keep StreamingEnabled on for performance purposes. Here are a couple solutions that would work alongside having StreamingEnabled set to true:
Dynamic Loading: Have an event on the local side that makes platforms collidable when they “come into view” of a client. Essentially, this means checking to see when a platform is a descendant of Workspace. You can use Workspace.DescendantAdded (inherited from Instance) to achieve this.
Collision Groups: This is my recommended method. On the server, you should make collision group logic so that way you can control whether a player can or cannot collide with the platforms. Unless you already have near the maximum number of collision groups (32, I believe), then I recommend this approach.