Godot Version
4.2.2
Question
Ok, so. I’m trying to make a map/level for my game. And Godot decides its a good idea to annoy me relentlessly about some “Scale Uniformity” stuff I don’t care about. I’m trying to make a regular normal 3D map for a platformer and I can’t. It also says it will change how it looks and collides with stuff. And it does. Again, I’m trying to make a 3D platformer level, with small Slab-like platforms, not a map that is just a bunch of blocks and looks like Minecraft. What is the point of Scale Uniformity? Why does it exist? Why does it want everything to be a cube? Why does it change how it is when something isn’t a cube? How do I stop it from changing sizes? And how do you make it shut up?
Please help. And yes, I am new.
Do not change collision shapes scale non-uniformly, no physics engine likes that. You can scale everything else. Maybe you need to create simpler collision geometry as sibilings of the visual elements?
You can change the dimensions of some things without scaling them. I had a similar issue with colliders and solved it this way
func _set_diameter():
top_collision.shape.radius = Diameter / 2
bottom_collision.shape.radius = Diameter / 2
top_mesh.mesh.top_radius = Diameter / 2
top_mesh.mesh.bottom_radius = Diameter / 2
bottom_mesh.mesh.top_radius = Diameter / 2
bottom_mesh.mesh.bottom_radius = Diameter / 2
Compare that to the scaling I did for the visuals:
func _set_spring_mesh():
spring_mesh.position = (spring_top.position + spring_bottom.position) / 2
spring_mesh.scale.y = spring_top.position.distance_to(spring_bottom.position) + CompressedLength / 2
spring_mesh.scale.x = Diameter
spring_mesh.scale.z = Diameter
spring_mesh.rotation = spring_bottom.rotation
Oh, and as the other poster said, I had my mesh and collider as siblings (children of the rigid body). That way scaling the mesh did not cause the collider to scale.
And I was using Jolt, not sure how much that matters here.