void Start() { _playableGOMovement = _playerGO.GetComponent <PlayableGOMovement>(); _planetBehaviour = _planetGO.GetComponent <PlanetBehaviour>(); _scoreText.text = "Score: " + _score; _looseText.gameObject.SetActive(false); _audioScore = gameObject.GetComponentInChildren <AudioSource>(); _shipIndex = PlayerPrefs.GetInt("shipIndex"); Transform rootSpaceShipsGO = _playerGO.transform.GetChild(0); for (int i = 0; i < rootSpaceShipsGO.transform.childCount; i++) { _shipsGOs.Add(rootSpaceShipsGO.GetChild(i).gameObject); if (i == PlayerPrefs.GetInt("shipIndex")) { _shipsGOs[i].SetActive(true); } else { _shipsGOs[i].SetActive(false); } } if (!_testMode) { StartCoroutine("spawnEnemy"); } }
void PlanetHit(PlanetBehaviour planet, RocketBehaviour rocket, PlanetBehaviour.HitInfo hitInfo) { if (planet != playerController.playerPlanet) { AddPoints((int)(configuration.damageScoreMultiplier * hitInfo.damageDealt)); if (hitInfo.coreExposed) { uiController.FlashMessage("CORE EXPOSED"); AddPoints(500); } if (hitInfo.coreHit) { uiController.FlashMessage("CORE HIT"); AddPoints(1000); } if (planet.state.hitPoints <= 0.0f) { planet.Explode(); } } else { if (playerController.playerPlanet.state.hitPoints <= 0.0f) { GameOver(); } } }
public void Initialize(InteractionData interactionData) { PlanetBehaviour = GetComponent <PlanetBehaviour>(); interactionData.CurrentlySelectedPlanet.Subscribe(planet => { IsUnderCursor = planet == this && gameObject.activeSelf; }).AddTo(gameObject); }
public ShipList(PlanetBehaviour planet, Vector3 axis, float speed) { this.planet = planet; sqrRadius = planet.radius * planet.radius; this.axis = axis; this.speed = speed; }
public void SetTarget(PlanetBehaviour target) { if (Ship.State == ShipState.Idle && target != TargetPlanet) { TargetPlanet = target; Ship.State = ShipState.Moving; transform.SetParent(null); } }
private Vector3 GetGravityForce(PlanetBehaviour mass) { float distance = (mass.transform.position - transform.position).magnitude; float m1 = _rigidbody.mass; float m2 = mass._rigidbody.mass; float G = Global.GRAVITY; float force = G * m1 * m2 / Mathf.Pow(distance, 2); Vector3 dir = (mass.transform.position - transform.position).normalized; return(-dir * force); }
void HandlePlanetCollision(Vector3 hitPosition, PlanetBehaviour otherPlanet) { if (otherPlanet.mass < mass) { var damage = configuration.collisionMassDamageMultiplier * otherPlanet.mass; ReceiveDamage(damage, hitPosition, otherPlanet.configuration.mainColor); } else { Explode(); } }
void PlanetExploded(PlanetBehaviour planet) { levels [currentLevel].GetComponent <LevelBehaviour> ().numPlanets--; if (planet.configuration.isPlayer) { GameOver(); } else if (levels [currentLevel].GetComponent <LevelBehaviour> ().numPlanets == 0) { currentLevel++; LoadLevel(); } }
public IEnumerator SpawnDelay(PlanetBehaviour p, float timer, WarpBehviour crt, Text warpText, float warpTimer) { warpText.text = "Taking Off"; anim.SetBool("Victory", true); yield return(new WaitForSeconds(timer)); SpawnOnOtherPlanet(p); warpText.text = "Landing"; yield return(new WaitForSeconds(timer)); anim.SetBool("Victory", false); crt.inputEvents.SetActive(true); crt.warping = false; enabled = true; crt.coroutine = null; }
public static void GenerateGalaxy(Vector3 position, SunSystem sunSystem, Navigation navigation, ICollection <SpaceBody> outGeneratedObjects, AsyncProcessor asyncProcessor) { List <Obstacle> obstacles = new List <Obstacle>(); var sun = ((SunBehaviour)GameObject.Instantiate(Resources.Load <SunBehaviour>(@"Environment\Sun"), position, Quaternion.identity)); outGeneratedObjects.Add(sun); Color sunColor = new Color(.5f, .5f, .5f) + new Color(Random.value, Random.value, Random.value) * .5f; sun.Initialize(sunColor, sunSystem.sun.radius, asyncProcessor); sun.AddMyComponent <WorldlGravity>(); var obstacle = sun.AddMyComponent <Obstacle>(); obstacle.radius = sunSystem.sun.radius; obstacles.Add(obstacle); PlanetBehaviour planet = Resources.Load <PlanetBehaviour>(@"Environment\Planet"); Vector3 axisRight = MyVector.RandomAxis3(); Vector3 axisUp = Vector3.Cross(sun.transform.up, axisRight); foreach (var pl in sunSystem.planets) { var p = GameObject.Instantiate(planet, sun.transform.position + axisRight * pl.axisOffset, Quaternion.identity); p.transform.RotateAround(sun.transform.position, axisUp, Random.value * 360); p.Initialize(sun, axisUp, pl.radius, asyncProcessor); if (Random.value < .1f) { p.InitializeAtmosphere(sunColor, sun.transform.position, sunSystem.sun.radius, pl.radius, asyncProcessor); } p.AddMyComponent <WorldlGravity>(); obstacle = p.AddMyComponent <Obstacle>(); obstacle.radius = pl.radius; obstacles.Add(obstacle); outGeneratedObjects.Add(p); } navigation.AddObstacles(obstacles); }
public void SpawnOnOtherPlanet(PlanetBehaviour p) { var children = p.gameObject.transform.GetComponentsInChildren <Transform>(); var spawnPoints = new List <GameObject>(); foreach (var child in children) { if (child.gameObject.tag != "SpawnPoint") { continue; } spawnPoints.Add(child.gameObject); } var tpLocation = spawnPoints[Random.Range(0, spawnPoints.Count)].transform.position; transform.position = tpLocation; }
public void Start() { if (PlanetModifiers.Planets.Count == 0) { PlanetModifiers.init(); } planetDropDown = transform.Find("Planet_Dropdown").GetComponent <Dropdown>(); populateDropdown(); planetDropDown.onValueChanged.AddListener(delegate { changePlanetType(planetDropDown); }); playGameBtn = transform.Find("Next_Button").GetComponent <Button>(); genPlanetBtn = transform.Find("Refresh_Button").GetComponent <Button>(); playGameBtn.onClick.AddListener(PlayGame); genPlanetBtn.onClick.AddListener(GeneratePlanet); backBtn = transform.Find("Back_Button").GetComponent <Button>(); backBtn.onClick.AddListener(Back); planetName = transform.Find("Input_Name").GetComponent <InputField>(); scaleSlider = transform.Find("Scale_Slider").GetComponent <Slider>(); scaleSlider.value = PlanetInfo.info.planetScale; scaleSlider.onValueChanged.AddListener(delegate { valueChangeScale(); }); speedSlider = transform.Find("Speed_Slider").GetComponent <Slider>(); speedSlider.value = PlanetInfo.info.rotationSpeed; speedSlider.onValueChanged.AddListener(delegate { valueChangeSpeed(); }); messageBox = transform.Find("Message_Box").GetComponent <MessageOk>(); pt = transform.Find("Planet_Preview").GetComponentInChildren <PerlinNoiseTerrain>(); pb = transform.Find("Planet_Preview").GetComponentInChildren <PlanetBehaviour>(); }
// Update is called once per frame void Update() { for (int j = 0; j < nb; j++) { bodyGos [j].transform.position = (x [j] - x [centerObject]).v3(); PlanetBehaviour pb = bodyGos [j].GetComponent <PlanetBehaviour> (); pb.x = x [j]; pb.center = x [centerObject]; pb.v = v [j]; pb.mu = (float)(m [0] * G); } //float timestep = Input.GetAxis ("Timestep"); //threadDT *= (1.0f + 0.25f * timestep); for (int j = 0; j < nb; j++) { if (x[j].sqrMagnitude > 1000.0f || toBeRemoved[j] == true) { popObject(j); break; } } //Center(); float timeAxis = Input.GetAxis("timeAxis"); if (timeAxis != 0.0f) { modelDT *= (1.0f + Time.deltaTime * timeAxis * 1.0f); Debug.Log(modelDT); } if (Input.GetButtonDown("FocusUp")) { centerObject++; centerObject = centerObject % nb; } if (Input.GetButtonDown("FocusDown")) { centerObject--; centerObject = centerObject % nb; } //float dt; //if (threaded) // dt = threadDT; //else // dt = Time.fixedDeltaTime; GameObject.Find("TimeDisplay").GetComponent <Text> ().text = string.Format("DT = {0:####.0000} ", modelDT); GameObject.Find("FocusDisplay").GetComponent <Text> ().text = string.Format("Focus = {0} ", centerObject); GameObject.Find("NDisplay").GetComponent <Text> ().text = string.Format("N = {0} ", nb); /* * if (Input.GetButtonDown ("Cancel")) { * // clear all trail * for(int j=0;j<nb;j++) { * bodyGos[j].GetComponent<PlanetBehaviour>().Clear(); * } * } */ }
private void LevelChanged() { _planet = _solarSystemBehaviour.Planets.FirstOrDefault(planet => planet.Planet.PlanetType == PlanetType.Home); gameObject.SetActive(_planet); RefreshPosition(); }