As a Roblox developer, it is currently impossible to . . .
Control the collision of terrain water independently from that of solid terrain. This means that a developer who would like to script its own buoyancy behavior has to work around the physics behavior of terrain water that ships with studio. In the current situation developers are forced to abandon smooth terrain and work with parts.
Use case for controlling water CanCollide separately from solid terrain
I am building a vehicle that can transform from a car to a boat. I want the water in my game to visually look like terrain water, but do not want the Roblox-shipped buoyancy behavior that comes with it. More concrete: I want to script my own boat behavior/physics but do still want the vehicle to physically interact with the rest of the world (Bumping into the side of terrain, riding on the bottom of a lake)
In the current situation, one can disable smooth terrain collision entirely through setting CanCollide or by utilizing collision groups. Controlling the collision of solid and non-solid terrain materials separately is not possible.
If Roblox is able to address your issue, how would it improve your game and/or your development experience? Please be as specific as possible.
Allowing to disable water collision/behavior independent from solid terrain collision allows developers to work with terrain water without being forced to use the built-in buoyancy behavior. Disabling this behavior is critical for some gameplay elements to work reliably (i.e. my transforming car/boat/plane vehicle) but in the current situation developers are forced to abandon smooth terrain and work with parts.
Possible implementations
-
CanCollide boolean in Terrain object to disable/enable collision/behavior of non-solid terrain materials (i.e. water)
-
Seperate collision group for non-solid terrain materials which is tied to the Terrain object
-
Expose Bouyancy related variables as properties of the Terrain object to allow developers to tweak and/or disable this default behavior.
-
Allow multiple instances of the Terrain object to exist and render with their own geometry and therefor their own collision group (i.e. Terrain instance for solid terrain, Terrain instance for water).
-
Water material for Parts with optional physics behavior by controling the Parts CanCollide property.