private void Update() { if (GameManager.i.isPaused) { return; } if (Input.GetAxis("Horizontal") > 0) { artileryCommander.MoveArtileryClockwise(); } if (Input.GetAxis("Horizontal") < 0) { artileryCommander.MoveArtileryCounterClockwise(); } if (Input.GetAxis("Vertical") > 0) { shieldCommander.MoveShieldClockwise(); } if (Input.GetAxis("Vertical") < 0) { shieldCommander.MoveShieldCounterClockwise(); } if (Input.GetKeyDown(KeyCode.Space)) { artileryCommander.HoldFire(); } if (Input.GetKeyUp(KeyCode.Space)) { artileryCommander.ReleaseFire(); } }
private void Update() { if (target != null) { Debug.DrawLine(transform.position, target.transform.position, Color.green); } Debug.DrawRay(transform.position, artileryCommander.aimDirection * 10, Color.red); if (targetDirection != null) { Debug.DrawRay(transform.position, targetDirection.Value * 10, Color.blue); } if (damageable.isDead) { return; } if (target != null && target.isDead) { target = null; state = AIState.EnemySearch; } AimIfNeeded(); switch (state) { case AIState.EnemySearch: var planets = GameManager.i.GetAlivePlanets(); if (planets.Length == 0) { return; } Planet nearestPlanet = null; foreach (var planet in planets) { if (planet.gameObject.name == this.gameObject.name) { continue; } var distance = Vector3.Distance(transform.position, planet.transform.position); if (nearestPlanet == null) { nearestPlanet = planet; } else { var distanceToNearestPlanet = Vector3.Distance(transform.position, nearestPlanet.transform.position); if (distance < distanceToNearestPlanet) { nearestPlanet = planet; } } } target = nearestPlanet.GetComponent <Damageable>(); state = AIState.Aiming; break; case AIState.Aiming: if (aimed) // aimed { state = AIState.HoldingFire; } break; case AIState.HoldingFire: if (!artileryCommander.isHoldingFire) { artileryCommander.HoldFire(); } else { if (artileryCommander.currentProgressPercent <= .1f) { return; } else { artileryCommander.ReleaseFire(); state = AIState.OnCoolDown; } } break; case AIState.OnCoolDown: if (artileryCommander.isOnCooldown) { return; } else { state = AIState.EnemySearch; } break; } }