125 |
126 |
130 |
131 | ├── Build.unity3d ├── Assets ├── Materials │ ├── Planet.mat │ ├── Player.mat │ ├── Rocks.mat │ ├── Planet.mat.meta │ ├── Player.mat.meta │ └── Rocks.mat.meta ├── Models │ ├── Planet.blend │ ├── Materials │ │ ├── unnamed.mat │ │ └── unnamed.mat.meta │ ├── Materials.meta │ └── Planet.blend.meta ├── Scenes │ ├── Faux Gravity.unity │ └── Faux Gravity.unity.meta ├── Materials.meta ├── Models.meta ├── Scenes.meta ├── Scripts.meta └── Scripts │ ├── GravityBody.cs.meta │ ├── GravityAttractor.cs.meta │ ├── PlayerController.cs.meta │ ├── GravityBody.cs │ ├── GravityAttractor.cs │ └── PlayerController.cs ├── ProjectSettings ├── TagManager.asset ├── AudioManager.asset ├── InputManager.asset ├── NavMeshLayers.asset ├── TimeManager.asset ├── DynamicsManager.asset ├── EditorSettings.asset ├── NetworkManager.asset ├── ProjectSettings.asset ├── QualitySettings.asset ├── GraphicsSettings.asset ├── Physics2DSettings.asset └── EditorBuildSettings.asset ├── .gitignore ├── README.md └── index.html /Build.unity3d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Build.unity3d -------------------------------------------------------------------------------- /Assets/Materials/Planet.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Assets/Materials/Planet.mat -------------------------------------------------------------------------------- /Assets/Materials/Player.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Assets/Materials/Player.mat -------------------------------------------------------------------------------- /Assets/Materials/Rocks.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Assets/Materials/Rocks.mat -------------------------------------------------------------------------------- /Assets/Models/Planet.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Assets/Models/Planet.blend -------------------------------------------------------------------------------- /Assets/Scenes/Faux Gravity.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Assets/Scenes/Faux Gravity.unity -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /Assets/Models/Materials/unnamed.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/Assets/Models/Materials/unnamed.mat -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/NavMeshLayers.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/NavMeshLayers.asset -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /Assets/Materials/Planet.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24e7199542ff14d8cb1e98d278aa4ff4 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Materials/Player.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b4244e3b86474b2b9e68e3ca42bfb49 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Materials/Rocks.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42643bae60b2047fab02924e27a3be5a 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Scenes/Faux Gravity.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1f3f71ef2d754d6cab8197b456f52f0 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2dd13d061c66942f8ba60850c8edb8fa 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21213023e83f349b38016b871a0d698b 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 235cd9ab2571c41bfb1e4ad432e82141 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e52ce3d6cafb4d2f8faa0cda0fca7b8 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xananax/unity-planetGravity/HEAD/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /Assets/Models/Materials/unnamed.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dea4d858763bcf24e90ffd23197f5548 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Assets/Models/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d7e7117a3901b2446b68bb9fb6d742bc 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/Scripts/GravityBody.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52117d87c85cd44b8b728c7ff5634596 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/GravityAttractor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e11a351b45552428fa7570f670e80be3 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/PlayerController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb9035be58bb54977abb4f19fac5709a 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # =============== # 2 | # Unity generated # 3 | # =============== # 4 | Temp/ 5 | Library/ 6 | 7 | # ===================================== # 8 | # Visual Studio / MonoDevelop generated # 9 | # ===================================== # 10 | ExportedObj/ 11 | obj/ 12 | *.svd 13 | *.userprefs 14 | /*.csproj 15 | *.pidb 16 | *.suo 17 | /*.sln 18 | *.user 19 | *.unityproj 20 | *.booproj 21 | 22 | # ============ # 23 | # OS generated # 24 | # ============ # 25 | .DS_Store 26 | .DS_Store? 27 | ._* 28 | .Spotlight-V100 29 | .Trashes 30 | ehthumbs.db 31 | Thumbs.db -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Faux Gravity Project 2 | 3 | Taken from Sebastian Lague in this [youtube tutorial](https://www.youtube.com/watch?v=gHeQ8Hr92P4) and expanded on. 4 | 5 | [test it here](http://xananax.github.io/unity-planetGravity) 6 | 7 | ------ 8 | 9 | ## Goodies 10 | 11 | * Mario Galaxy Type of Gravity 12 | * Planets can get a mass automatically derived from their density and size 13 | * Jet-pack type of jump or "hold to increase" type of jump 14 | 15 | ------ 16 | 17 | ## Issues 18 | 19 | Sometimes jumping goes in weird directions for no obvious reasons 20 | 21 | ------ 22 | 23 | ## License 24 | 25 | Sebastian didn't specify a license so I'm going to go on a limb and say MIT -------------------------------------------------------------------------------- /Assets/Scripts/GravityBody.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | [RequireComponent (typeof (Rigidbody))] 5 | public class GravityBody : MonoBehaviour { 6 | 7 | public GravityAttractor attractor; 8 | private Transform myTransform; 9 | 10 | void Start () { 11 | rigidbody.useGravity = false; 12 | rigidbody.constraints = RigidbodyConstraints.FreezeRotation; 13 | myTransform = transform; 14 | } 15 | 16 | void FixedUpdate () { 17 | if (attractor){ 18 | attractor.Attract(myTransform); 19 | } 20 | } 21 | 22 | void OnTriggerEnter(Collider col){ 23 | GravityAttractor obj = col.GetComponent("GravityAttractor") as GravityAttractor; 24 | if(obj){ 25 | attractor = obj; 26 | } 27 | } 28 | 29 | void OnTriggerExit(Collider col){ 30 | attractor = null; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Assets/Scripts/GravityAttractor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class GravityAttractor : MonoBehaviour { 5 | 6 | public float gravity = 0; 7 | public float rotationSmoothness = 5f; 8 | public float density = 5.52f; 9 | private float volume; 10 | 11 | public void Start(){ 12 | if(gravity==0){ 13 | if(collider.GetType() == typeof(SphereCollider)){ 14 | volume = (collider.bounds.size.x * Mathf.PI)/6; 15 | }else if(collider.GetType() == typeof(CapsuleCollider)){ 16 | volume = ((Mathf.PI * collider.bounds.size.x * collider.bounds.size.y) * collider.bounds.size.z)/4; 17 | }else{ 18 | volume = collider.bounds.size.x * collider.bounds.size.y * collider.bounds.size.z; 19 | } 20 | gravity = -((density/10) * volume)/2; 21 | } 22 | } 23 | 24 | public void Attract(Transform body) { 25 | Vector3 gravityUp = (body.position - transform.position).normalized; 26 | Vector3 localUp = body.up; 27 | 28 | body.rigidbody.AddForce(gravityUp * gravity); 29 | 30 | Quaternion targetRotation = Quaternion.FromToRotation(localUp,gravityUp) * body.rotation; 31 | body.rotation = Quaternion.Slerp(body.rotation,targetRotation,rotationSmoothness * Time.deltaTime ); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Assets/Models/Planet.blend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5478d11a22ffb451aa5ece8d1df97089 3 | ModelImporter: 4 | serializedVersion: 15 5 | fileIDToRecycleName: 6 | 100000: Cube_001 7 | 100002: //RootNode 8 | 400000: Cube_001 9 | 400002: //RootNode 10 | 2300000: Cube_001 11 | 2300002: //RootNode 12 | 3300000: Cube_001 13 | 3300002: //RootNode 14 | 4300000: Sphere 15 | 4300002: Cube_001 16 | 7400000: Default Take 17 | 9500000: //RootNode 18 | materials: 19 | importMaterials: 1 20 | materialName: 0 21 | materialSearch: 1 22 | animations: 23 | legacyGenerateAnimations: 4 24 | bakeSimulation: 0 25 | optimizeGameObjects: 0 26 | animationCompression: 1 27 | animationRotationError: .5 28 | animationPositionError: .5 29 | animationScaleError: .5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | clipAnimations: [] 33 | isReadable: 1 34 | meshes: 35 | lODScreenPercentages: [] 36 | globalScale: 1 37 | meshCompression: 0 38 | addColliders: 0 39 | importBlendShapes: 1 40 | swapUVChannels: 0 41 | generateSecondaryUV: 0 42 | useFileUnits: 1 43 | optimizeMeshForGPU: 1 44 | weldVertices: 1 45 | secondaryUVAngleDistortion: 8 46 | secondaryUVAreaDistortion: 15.000001 47 | secondaryUVHardAngle: 88 48 | secondaryUVPackMargin: 4 49 | tangentSpace: 50 | normalSmoothAngle: 60 51 | splitTangentsAcrossUV: 1 52 | normalImportMode: 0 53 | tangentImportMode: 1 54 | importAnimation: 1 55 | copyAvatar: 0 56 | humanDescription: 57 | human: [] 58 | skeleton: [] 59 | armTwist: .5 60 | foreArmTwist: .5 61 | upperLegTwist: .5 62 | legTwist: .5 63 | armStretch: .0500000007 64 | legStretch: .0500000007 65 | feetSpacing: 0 66 | rootMotionBoneName: 67 | lastHumanDescriptionAvatarSource: {instanceID: 0} 68 | animationType: 2 69 | userData: 70 | -------------------------------------------------------------------------------- /Assets/Scripts/PlayerController.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class PlayerController : MonoBehaviour { 5 | 6 | public float moveSpeed = 15f; 7 | public float jumpMaxStrength = 5f; 8 | public float holdJumpIncrement = .5f; 9 | public float jumpMilliseconds = 100f; 10 | public bool holdToJump = false; 11 | public float jumpStrength = 0f; 12 | public float airModifier = 5f; 13 | [HideInInspector] 14 | public bool grounded = true; 15 | private Vector3 moveDirection; 16 | private float jumpMillisecondsLeft = 0; 17 | private float _holdJumpMaxStrength = 0; 18 | private float _holdJumpIncrement = 0; 19 | 20 | void SetUp(){ 21 | grounded = true; 22 | jumpMillisecondsLeft = jumpMilliseconds; 23 | if(holdToJump){ 24 | jumpStrength = 0; 25 | }else{ 26 | jumpStrength = jumpMaxStrength; 27 | } 28 | _holdJumpIncrement = holdJumpIncrement * 200; 29 | _holdJumpMaxStrength = jumpMaxStrength * 1000; 30 | } 31 | 32 | void Start(){ 33 | SetUp(); 34 | } 35 | 36 | void Jump(){ 37 | rigidbody.AddForce(new Vector3(0,jumpStrength,0), ForceMode.VelocityChange); 38 | grounded = false; 39 | } 40 | 41 | void Update() { 42 | moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"),0,Input.GetAxisRaw("Vertical")).normalized; 43 | if(Input.GetButton("Jump")){ 44 | float timeStep = Time.deltaTime; 45 | float milliSecondsElapsed = timeStep*1000; 46 | jumpMillisecondsLeft-=milliSecondsElapsed; 47 | if(!holdToJump && (jumpMillisecondsLeft>0)){ 48 | Jump(); 49 | } 50 | else if(jumpMillisecondsLeft>0){ 51 | float jumpInc = _holdJumpIncrement * timeStep; 52 | jumpStrength+= jumpInc; 53 | Mathf.Clamp(jumpStrength,0,_holdJumpMaxStrength); 54 | } 55 | }else if(holdToJump && Input.GetButtonUp("Jump")){ 56 | Jump(); 57 | jumpStrength = 0; 58 | } 59 | } 60 | 61 | void OnCollisionEnter(Collision collision){ 62 | SetUp(); 63 | } 64 | 65 | void FixedUpdate() { 66 | rigidbody.MovePosition(rigidbody.position + transform.TransformDirection(moveDirection) * (grounded? moveSpeed : (moveSpeed/airModifier)) * Time.deltaTime); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |Unity Web Player | Faux Gravity Example
120 |
125 |
126 |
130 |
131 |