public override void OnInspectorGUI() { PlanetBehavior t = target as PlanetBehavior; if (t == null) { return; } if (GUILayout.Button("Move To Start of Orbit")) { t.transform.position = PlanetBehavior.Elipse(t.XElipseRadius(), t.YElipseRadius(), Vector3.zero, t.ElipseAngle(), 0); } base.OnInspectorGUI(); }
void OnSceneGUI() { PlanetBehavior t = target as PlanetBehavior; if (t == null) { return; } Handles.color = Color.yellow; Vector3[] elipsePoints = new Vector3[256]; for (int i = 0; i < elipsePoints.Length; i++) { elipsePoints[i] = PlanetBehavior.Elipse(t.XElipseRadius(), t.YElipseRadius(), Vector3.zero, t.ElipseAngle(), (float)i / elipsePoints.Length); // ((float)(i + 1) / elipsePoints.Length) * 4 * t.XElipseRadius() } for (int i = 1; i < elipsePoints.Length; i++) { Handles.DrawLine(elipsePoints[i - 1], elipsePoints[i]); } }
void CheckEnemyActions() { PlanetBehavior playerPlanet = PlayerStatsController.Instance.GetPlayersPlanet(); if (playerPlanet != null) { transform.LookAt(playerPlanet.transform.position, -Vector3.forward); float cooldown = GetCooldownPercents(); if (cooldown >= 1f) { //set delay before next launch to make enemy more easy if (Time.time > lastLaunchTime + currentWeaponStats.CooldownTime + launchDelayAI) { //enemy launch his rocket LaunchRocket(); launchDelayAI = Random.Range(0.4f, 2.5f); } } } }
public void ResetSystem() { Debug.Log("Clean previous system"); int planetCount = PlanetList.Count; for (int i = 0; i < planetCount; i++) { PlanetBehavior planet = PlanetList[0]; PlanetList.RemoveAt(0); Destroy(planet.gameObject); } Storage.Instance.CleanPool(); PlanetList.Clear(); PlanetBarsList.Clear(); //spawn new objects InitializeSystem(); //unpause Messenger.Broadcast(MessageKeys.ON_CONTINUE); }
public void AttachPlanet(PlanetBehavior planet) { currentPlanet = planet; }
void InitializeSystem() { //Create planets here float currentDistance = MinPlanetDistance; List <int> FreePlanets = new List <int>(); for (int i = 0; i < PlanetCount; i++) { //Generate random position Vector3 newPos = new Vector3(0f, 0f, 0f); //try to avoid overlays of planets currentDistance += Random.Range(1f, 7f); float dist = currentDistance; //check that planet on proper distance from each other float resultSpeed = Random.Range(PlanetInitSpeedMin, PlanetInitSpeedMax); //ability to set any start angle on orbit newPos.x = Mathf.Sin(0f) * dist; newPos.y = Mathf.Cos(0f) * dist; //better if depends from size // float newPlanetMass = Random.Range(PlanetInitMassMin, PlanetInitMassMax); GameObject newPlanet = Instantiate(PlanetPrefab, newPos, PlanetPrefab.transform.rotation); PlanetBehavior planet = newPlanet.GetComponent <PlanetBehavior>(); planet.ID = i; //randomize planet type int randomType = Random.Range(0, 3); PlanetType t = (PlanetType)randomType; int weaponType = Random.Range(1, 4); //choose weapon here planet.Initialize(resultSpeed, t, weaponType); PlanetList.Add(planet); GameObject barObject = Instantiate(HpBarPrefab, newPos + new Vector3(0f, 10f, -10f), Quaternion.identity); HealthBar bar = barObject.GetComponent <HealthBar>(); bar.AttachPlanet(planet); PlanetBarsList.Add(bar); Storage.Instance.AddToPool(barObject); //add offset from planet currentDistance += planet.GetSize() + 3f; FreePlanets.Add(planet.ID); } int playerPlanetIndex = Random.Range(0, FreePlanets.Count); int playerPlanetID = FreePlanets[playerPlanetIndex]; FreePlanets.Remove(playerPlanetID); //also select planet for enemy int enemyIndex = Random.Range(0, FreePlanets.Count); int enemyPlanetID = FreePlanets[enemyIndex]; FreePlanets.Remove(enemyPlanetID); foreach (PlanetBehavior planet in PlanetList) { if (planet.ID == playerPlanetID) { planet.SetPlanetOwner(PlanetBehavior.PlanetOwnerType.Player); Messenger.Broadcast(MessageKeys.ON_PLANET_SETTED, planet, planet.GetWeaponID()); Debug.Log("Player planet ID:" + playerPlanetID); } else if (planet.ID == enemyPlanetID) { planet.SetPlanetOwner(PlanetBehavior.PlanetOwnerType.AI); Debug.Log("AI planet ID:" + playerPlanetID); } else { planet.SetPlanetOwner(PlanetBehavior.PlanetOwnerType.None); } } }
public void RemovePlanet(PlanetBehavior planet) { PlanetList.Remove(planet); }
private void OnEnable() { planet = (PlanetBehavior)target; }
public void OnPlanetSelected(PlanetBehavior planet, int weaponID) { currentWeaponStats = Storage.Instance.GetWeaponData(weaponID); currentPlanet = planet; }
// Use this for initialization void Start() { hexPlanet = planet.GetComponent<HexPlanet>(); planetBehavior = planet.GetComponent<PlanetBehavior>(); sceneBuilder = GameObject.FindGameObjectWithTag("GameController").GetComponent<SceneBuilder>(); }
private void Awake() { planet = transform.parent.GetComponent <PlanetBehavior>(); planetTransform = transform.parent; }