28 lines
1.0 KiB
C#
28 lines
1.0 KiB
C#
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
|
|
public class Altimeter : MonoBehaviour
|
|
{
|
|
[Header("References")]
|
|
public Rigidbody rocketRigidbody; // Reference to the rocket's Rigidbody
|
|
[Header("Data")]
|
|
public double altitude = 0; // Current altitude
|
|
public double gh = 9.81f; // Gravitational acceleration
|
|
|
|
[Header("Settings")]
|
|
[SerializeField] private double G = 6.67408f * Mathf.Pow(10, -11); // Gravitational constant
|
|
[SerializeField] private double M = 5.972f * Mathf.Pow(10, 24); // Mass of Earth
|
|
[SerializeField] private double RE = 6.372f * Mathf.Pow(10, 6); // Radius of Earth
|
|
private double GM; // Gravitational parameter (G * M)
|
|
|
|
void Start()
|
|
{
|
|
GM = G * M; // Calculate the gravitational parameter
|
|
}
|
|
void Update()
|
|
{
|
|
altitude = rocketRigidbody.position.y; // Update altitude based on the rocket's vertical position
|
|
gh = (double)(GM / Mathf.Pow((float)(RE + altitude), 2)); // Calculate gravitational acceleration at current altitude
|
|
}
|
|
}
|