モノ創りで国造りを

ハード/ソフト問わず知見をまとめてます

ブラックホールのようなものを作る2

先日、万有引力の挙動を示すコードを作成したが、
あれって地球視点だから、ゲームには応用しにくいと思い
太陽視点のコードを作成
といっても記載内容はほぼ変わらず thisがGameobject earthに変わったくらいか。
こんなに簡単にオブジェクトの挙動をいじれるなんで
ほんとUnity様様ですよ。

public class inryoku : MonoBehaviour {
    Vector3 distance;//2物体間の距離
    Vector3 centerPosition;//軌道の中心の座標
    Vector3 forceObject;//移動する物体にかかる力
    float gravityConst = 100.0f;//定数(=GMm)のパラメータ
    Rigidbody2D rigid2D;
    GameObject earth;
                              // Use this for initialization
    void Start () {
        centerPosition = transform.position;
        this.earth = GameObject.Find("earth");
        this.rigid2D = earth.GetComponent<Rigidbody2D>();
    }
    
    // Update is called once per frame
    void Update () {
        distance = centerPosition - earth.transform.position;
        forceObject = gravityConst * distance / Mathf.Pow(distance.magnitude, 3);
        this.rigid2D.AddForce(forceObject, ForceMode2D.Force);
    }
}