// Start is called before the first frame update void Start() { int maxPlanets = 10; int countPlanets = Random.Range(0, maxPlanets + 1); HashSet <int> planetsIndices = new HashSet <int>(); while (planetsIndices.Count < countPlanets) { planetsIndices.Add(Random.Range(0, maxPlanets + 1)); } foreach (var planetsIndex in planetsIndices) { float RiRatio = SpaceMaths.GetPlanetRadiusByTitius_Bode(planetsIndex); float R = Constants.UnityUnitConverter.FromAstronomicalUnits(RiRatio); float T = SpaceMaths.YearsToSeconds(SpaceMaths.KeplerLawPeriod(RiRatio, 1f)); //Debug.Log(T); GameObject planet = Instantiate(SpherePrefab); planet.name = "Planet " + (planetsIndex + 1); OrbitControl control = planet.GetComponent <OrbitControl>(); CreateOrbitPoints(planet.GetComponent <LineRenderer>(), R); float phi_0 = Random.Range(0, Mathf.PI * 2); PlanetData data = new PlanetData(R, T, phi_0); control.SetPlanetData(data); } Camera.main.GetComponent <CameraSetupper>().target = GameObject.Find("Center").transform; //Camera.main.GetComponent<CameraSetupper>().target = GameObject.Find("Planet 3").transform; }
private void Awake() { // Scrollwheel zooming is stateless. It's handled // whenever a delta greater than 0 is detected. _scrollZoomControl = new ScrollZoomControl(); _scrollZoomControl.Init(transform); // Need to maintain a refernce to _orbitControl since other states // can affect its orbit point. _orbitControl = new OrbitControl(); _orbitControl.Init(transform); _transformControls = new Dictionary <CameraState, ITransformControl> { { CameraState.ORBIT, _orbitControl }, { CameraState.PAN, new PanControl() }, { CameraState.ROTATE, new RotationControl() }, { CameraState.MOUSE_ZOOM, new MouseZoomControl() } }; Reset(); }