using UnityEngine; using System.Collections; using System.Collections.Generic; public class Gravitypull : MonoBehaviour { //public GameObject gravityWell; //public float wellMass; public int gravConstPow; public GameObject[] planets; //public double gravConstant = 6.673f * Mathf.Pow(10,11); // Use this for initialization void Start () { planets = GameObject.FindGameObjectsWithTag ("ground"); } // Update is called once per frame void Update () { } void FixedUpdate() { foreach (GameObject planet in planets) { rigidbody2D.AddForce( calcGrav (planet)); } } private Vector2 calcGrav(GameObject planet){ double gravConstant = 6.673f * Mathf.Pow(10,gravConstPow); float gravityForce; Vector3 distance = planet.transform.position - transform.position; float r12 = distance.magnitude; distance /= r12; //Debug.Log ("distance: " + distance); gravityForce = (rigidbody2D.mass * planet.rigidbody2D.mass * (float)gravConstant) / (r12 * r12); //Debug.Log ("player mass: " + rigidbody.mass); //Debug.Log ("well mass: " + wellMass); //Debug.Log ("grav Const: " + (float)gravConstant); //Debug.Log ("r12: " + r12); //Debug.Log ("gravityForce: " + gravityForce); Vector2 distance2D = new Vector2 (distance.x, distance.y); Debug.Log ("force added: " + (distance2D * gravityForce)); return (distance2D * gravityForce); } }