

using UnityEngine;
public class GravityCtrl: MonoBehaviour {
//attach to all rigidbodies to orbit the world
public GravityOrbit Gravity;
private Rigidbody rb;
public float RotationSpeed = 20;
//start is called before the first frame update
void Start() {
Rb = GetComponent < Rigidbody > ();
}
void FixedUpdate() {
if (Gravity) {
Vector3 gravityUp = Vector3.zero;
if (Gravity.FixedDirection) {
gravityUp = Gravity.transform.up;
} else {
gravityUp = (transform.position - Gravity.transform.position).normalized;
}
//before Gravity.FixedDirection - only applied to spheres:
//gravityUp = (transform.position - Gravity.transform.position).normalized;
Vector3 localUp = transform.up;
Quaternion targetrotation = Quaternion.FromToRotation(localUp, gravityUp) * transform.rotation;
transform.up = Vector3.Lerp(transform.up, gravityUp, RotationSpeed * Time.deltaTime);
//push down for gravity
Rb.AddForce((-gravityUp * Gravity.Gravity) * Rb.mass);
}
}
}