- Home /
Sphere is noticeably not a sphere when dealing with large spheres?
Hello, in my game, I have a round earth which is basically just a textured sphere on which the player can walk about with a system of sphere gravity. Everything works fine when the sphere has a diameter of 100, but when upped to 1,000, the player's feet sink at some parts of the sphere and float at other parts, even though I'd expect the sphere collide should be the same for every part of the sphere. I can alter the sphere's collider so that the player is not floating or sinking in to it, but upon walking some more, things are messed up again, presumably due to the sphere not being an actual sphere.
Answer by Bunny83 · Jan 21, 2018 at 09:43 PM
A sphere mesh consists like any mesh of triangles. So the actual visual surface is never round. However when you use a sphere collider the collision is mathematically based on a true sphere. So obviously when you simulate a sphere surface using flat triangles at some points you are either inside the visual sphere or you are above. Instead of using a SphereCollider you can use a MeshCollider. That way the collision is actually based on the mesh. Though mesh colliders have more overhead than a sphere collider.
If you need a better resolution for the mesh you have to create a sphere mesh that has more triangles. Games which simulate the surface of a really large planet usually create and update the mesh procedurally and using some LOD system as you move along the surface. However it's not quite clear what you want to achieve.
How does one create a sphere mesh with more triangles?
Use Blender (free), create a primitive sphere shape and subdivide/smooth it to a level that is suitable, then output to OBJ of FBX (I prefer OBJ) and drop into Unity.
When dealing with geographical features, especially large ones, things can get very difficult. I'd encourage you to try to limit how deeply you want to simulate a real planets appearance and behaviour unless you have A LOT of free time :P
I just did not want the curve caused by the planet being sphere to be visible.
Your answer
Follow this Question
Related Questions
Sphere clipping in cube 1 Answer
Character Controller Object Randomly Falls Through Colliders 3 Answers
Raycast not working on object without gravity 0 Answers
Sphere + rigidbody + character controller 1 Answer
Change particle bounce relative to the speed of the GameObject colliding with them? 1 Answer