Files
2026-02-18 00:08:49 +02:00

55 lines
1.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SolarSystem : MonoBehaviour
{
[SerializeField] private float G = 100f;
private GameObject[] celestials;
void Start()
{
celestials = GameObject.FindGameObjectsWithTag("Celestial");
InitialVelocity();
}
private void FixedUpdate()
{
Gravity();
}
void Gravity()
{
foreach (GameObject a in celestials)
{
foreach (GameObject b in celestials)
{
if (!a.Equals(b))
{
float m1 = a.GetComponent<Rigidbody>().mass;
float m2 = b.GetComponent<Rigidbody>().mass;
float r = Vector3.Distance(a.transform.position, b.transform.position);
a.GetComponent<Rigidbody>().AddForce(
(b.transform.position - a.transform.position).normalized *
(G * (m1 * m2) / (r * r))
);
}
}
}
}
void InitialVelocity()
{
foreach (GameObject a in celestials)
{
foreach (GameObject b in celestials)
{
if (!a.Equals(b))
{
float m2 = b.GetComponent<Rigidbody>().mass;
float r = Vector3.Distance(a.transform.position, b.transform.position);
a.transform.LookAt(b.transform);
a.GetComponent<Rigidbody>().velocity +=
a.transform.right * Mathf.Sqrt((G * m2) / r);
}
}
}
}
}