private IEnumerator ShipLaunch() { shipState = SpaceShipState.LAUNCHING; Vector3 startPos = rigidbody.position; float timer = 0f; while (true) { yield return(new WaitForFixedUpdate()); timer += Time.fixedDeltaTime; float height = (timer / launchTime) * launchHeight; rigidbody.MovePosition(startPos + Vector3.up * height); if (timer > launchTime) { break; } } SetRigidbodyFlying(); shipState = SpaceShipState.FLYING; }
// Update is called once per frame void Update() { SpaceShipHandle(); if (spaceShipState != SpaceShipState.Burning) { if ((transform.position - Camera.main.transform.position).magnitude > OffsetDestroy) { Destroy(this.gameObject); RespawnSpaceship(Respawn); } else if (spaceShipPreState == SpaceShipState.Fire) { spaceShipPreState = spaceShipState = SpaceShipState.Normal; } else if (spaceShipPreState == SpaceShipState.Normal) { spaceShipPreState = spaceShipState = SpaceShipState.Fire; } if (spaceShipState == SpaceShipState.Launch) { spaceShipState = SpaceShipState.Normal; } SpaceShipRandomControl(); } }
private void SpaceShipRandomControl() { RandomControlTick += Time.deltaTime; if ((Target == null) || ((Target.transform.position - transform.position).magnitude < 6f)) { StateRate = RandomControlTick; } if (RandomControlTick >= StateRate) { StateRate = Random.Range(StateRateMin, StateRateMax); RandomControlTick = 0; float random = Random.Range(0f, 1f); if (random < RateLaunch) { spaceShipState = SpaceShipState.Launch; GameObject[] list = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject)); Target = list[Random.Range(0, list.Length - 1)]; } else if (random < RateFire) { spaceShipState = SpaceShipState.Fire; GameObject[] list = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject)); Target = list[Random.Range(0, list.Length - 1)]; } else { spaceShipState = SpaceShipState.Normal; GameObject[] list = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject)); Target = list[Random.Range(0, list.Length - 1)]; } //Debug.Log(spaceShipState + " " + Target); } }
// Use this for initialization protected void Awake () { myCollider = GetComponent<Collider>(); ai = GetComponent<SeekingWanderAI>(); scaleUnitWrapper = GetComponent<ScaleUnitWrapper>(); Assert.IsTrue(myCollider && myCrosshair && scaleUnitWrapper); myCrosshair.transform.localPosition = new Vector3(0, myCrosshair.transform.localPosition.y, 0); hitPoints = maxHitPoints; shipState = SpaceShipState.Inactive; dead = GameObject.Find("enemy_explosion").GetComponent<AudioSource>(); ai.BaseSpeed = maxBaseSpeed; ai.TurnSpeed = maxTurnSpeed; }
private IEnumerator Land(Vector3 landingPosition) { shipState = SpaceShipState.LANDING; SetRigidbodyLanded(); Vector3 startingPosition = rigidbody.position; float timer = 0f; while (timer < landingTime) { yield return(null); timer += Time.fixedDeltaTime; rigidbody.MovePosition(Vector3.Lerp(startingPosition, landingPosition, timer / landingTime)); } shipState = SpaceShipState.LANDED; }
void Update() { switch (PlayerClickHandle.ClickEvent) { case PlayerClickHandle.ClickState.Click: if (spaceShipState == SpaceShipState.Normal) { spaceShipState = SpaceShipState.Shoot; } break; case PlayerClickHandle.ClickState.LongPress: spaceShipState = SpaceShipState.Arming; break; case PlayerClickHandle.ClickState.DoubleClick: if (spaceShipState == SpaceShipState.Fire) { spaceShipPreState = spaceShipState = SpaceShipState.Normal; } else if (spaceShipState == SpaceShipState.Normal) { spaceShipPreState = spaceShipState = SpaceShipState.Fire; } break; default: if (spaceShipState == SpaceShipState.Arming) { spaceShipState = SpaceShipState.Launch; } else if (spaceShipState == SpaceShipState.Launch) { spaceShipState = spaceShipPreState; } else if (spaceShipState == SpaceShipState.Shoot) { spaceShipState = SpaceShipState.Normal; } break; } SpaceShipHandle(); }
void OnCollisionEnter(Collision col) { if (spaceShipState != SpaceShipState.Burning) { if (col.gameObject.tag == "BULLET") { Destroy(gameObject, BurningTime + 0.5f); Destroy(col.gameObject); spaceShipState = SpaceShipState.Burning; TimeStickDestroy = BurningTime; } else if (col.gameObject.tag == "MISSILE") { Destroy(gameObject, BurningTime + 0.5f); Destroy(col.gameObject); spaceShipState = SpaceShipState.Burning; TimeStickDestroy = BurningTime; } } }
public void Spawn(Vector3 spawnLoc) { shipState = SpaceShipState.Alive; spawnLocation = spawnLoc; startSpawnLocation = spawnLocation + startSpawnOffset; transform.position = startSpawnLocation; scaleUnitWrapper.Scale(false); gameObject.SetActive(true); if (ai) { ai.enabled = false; } }
protected virtual void Explode() { if (shipState == SpaceShipState.Dead || shipState == SpaceShipState.Inactive) { Debug.LogError("Spaceship was already dead!"); return; } //Debug.Log(this.name + " Blew up!"); // Play animation if (explosionAnimation) { GameObject explosion = Instantiate(explosionAnimation, transform.position, transform.rotation) as GameObject; explosion.GetComponentInChildren<SpriteAnimator>().play = true; } else Debug.LogError("There's no explosion prefab referenced!"); // Kill object shipState = SpaceShipState.Dead; if (parentWave) parentWave.NotifySpaceShipDied(this); SetInactive(); //Destroy(this.gameObject); }
/// <summary> /// Set this object as inactive for future use /// </summary> public void SetInactive() { shipState = SpaceShipState.Inactive; gameObject.SetActive(false); }
private void Start() { spaceShipState = SpaceShipState.Normal; spaceShipPreState = SpaceShipState.Normal; }