initial commit

This commit is contained in:
2026-06-04 00:55:54 +03:00
commit 89979b009f
1632 changed files with 880133 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
using UnityEngine;
public class SatelliteOrbit : MonoBehaviour
{
[Tooltip("Точка, навколо якої обертається супутник")]
public Transform center;
[Tooltip("Радіус орбіти")]
public float radius = 5f;
[Tooltip("Швидкість зміни кута в градусах за секунду")]
public float angularSpeed = 50f;
[Tooltip("Чи дивитись супутнику на центр під час руху")]
public bool lookAtCenter = false;
private float angleTheta; // горизонтальний кут (навколо Y)
private float anglePhi; // вертикальний кут (від 0 до 180)
void Start()
{
radius = Random.Range(300, 600);
angularSpeed = Random.Range(5, 25);
lookAtCenter = true;
if (center == null)
{
GameObject go = new GameObject("OrbitCenter");
go.transform.position = Vector3.zero;
center = go.transform;
}
// Випадкові початкові кути для різних напрямків руху
angleTheta = Random.Range(0f, 360f);
anglePhi = Random.Range(0f, 180f);
UpdatePosition();
}
void Update()
{
// Змінюємо кути для створення сферичної орбіти
angleTheta += angularSpeed * Time.deltaTime; // обертання навколо Y
anglePhi += angularSpeed * 0.5f * Time.deltaTime; // нахил вгору/вниз
if (angleTheta > 360f) angleTheta -= 360f;
if (anglePhi > 360f) anglePhi -= 360f;
UpdatePosition();
if (lookAtCenter)
transform.LookAt(center.position);
}
private void UpdatePosition()
{
float thetaRad = angleTheta * Mathf.Deg2Rad;
float phiRad = anglePhi * Mathf.Deg2Rad;
// Сферичні координати → декартові
float x = radius * Mathf.Sin(phiRad) * Mathf.Cos(thetaRad);
float y = radius * Mathf.Cos(phiRad);
float z = radius * Mathf.Sin(phiRad) * Mathf.Sin(thetaRad);
transform.position = center.position + new Vector3(x, y, z);
}
}