Gravity on a cube planet
How do i make a Gravity for a 3D cube planet? I was trying to make a Gravity Area for every side, so if a gameobject enter a area the gravity will change. My idea was to do this with OntriggerEnter/Exit, but i´m trouble with the Code. Hope you can help me! 
 
                 
                cube-gravity.jpg 
                (76.3 kB) 
               
 
              
               Comment
              
 
               
              Answer by Namey5 · Oct 25, 2016 at 12:12 AM
Lets say that you are using rigidbodies for physics. You could add the following script to any object that would be affected by physics;
 //Following is C#, I can covert it to JS if you wish
 using UnityEngine;
 using System.Collections;
 
 public class Gravity : MonoBehaviour 
 {
 
     public Transform centreOfGravity;    //The object to gravitate towards, in this case the cube
     public float gravity = 1f;    //The force of the gravity to be applied
     public float maxDistance;    //The maximum distance from the centreOfGravity this object can be whilst still being affected by gravity
     
     private Rigidbody rb;
 
     // Use FixedUpdate for physics calculations
     void FixedUpdate () 
     {
         if (!GetComponent<Rigidbody>())
             return;    //If no rigidbody attached, return
         if (Vector3.Distance (transform.position, centreOfGravity.position) > maxDistance)
             return;    //If we are further than the max distance, return
 
         if (!rb)
             rb = GetComponent.<Rigidbody>();    //If the rb variable is null, get the rigidbody attached to this object
         if (rb.useGravity)
             rb.useGravity = false;    //Make sure the rigidbody isn't using the global gravity variable
         
         Vector3 direction = (centreOfGravity.position - transform.position).normalized;    //Get the direction of the cube and normalize so it doesn't have distance
         RaycastHit hit;    //Will contain information about the raycast we are about to perform
         if (centreOfGravity.GetComponent<Collider>().Raycast (transform.position, direction, hit, maxDistance))
             rb.AddForce (-hit.normal * gravity * rb.mass);    //Apply the force to the rigidbody towards the relative surface of the cube. *note* that this will multiply the force by the rigidbody's mass so that all objects will fall at the same rate. If you don't want this, remove that section
     }
 }
Your answer
 
 
             Follow this Question
Related Questions
Unity Faux gravity on a cube: reaching some faces is troublesome 0 Answers
Moving and Rotating a Player Smoothly on a Rotating Planet 0 Answers
Newtons Cradle Balls? 1 Answer
3D Aimable Sling Shot 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                