void SetFiring(bool firing) { if(firing) { isFiring = true; for(int i = 0; i < laserLength; i++) { PoolableSprite beam = beamPool.GetPooled().GetComponent<PoolableSprite>(); if(verticalFire) beam.transform.position = firingPosition.position + new Vector3(0,i*laserPieceLength); else beam.transform.position = firingPosition.position + new Vector3(i*laserPieceLength,0); beam.gameObject.SetActive(true); beam.SendMessage("SetTurret",transform); beams.Add(beam); } end = endPool.GetPooled().GetComponent<PoolableSprite>(); if(verticalFire) end.transform.position = firingPosition.position + new Vector3(0,(laserLength)*laserPieceLength); else end.transform.position = firingPosition.position + new Vector3((laserLength)*laserPieceLength,0); end.gameObject.SetActive(true); end.SendMessage("SetTurret",transform); StartCoroutine(Timers.Countdown<bool>(onTime,SetFiring,false)); } else { isFiring = false; TurnOffBeams(); StartCoroutine(Timers.Countdown<bool>(offTime,SetFiring,true)); } }
private void Start() { TilePools = new List <Pool <PoolableSprite> >(); ActiveTiles = new List <PoolableSprite>(); foreach (PoolableSprite Tile in TilePrefabs) { TilePools.Add(new Pool <PoolableSprite>(Tile, 10, 10, Pool <PoolableSprite> .EPoolType.GameObject)); } int rand_idx = Random.Range(0, TilePools.Count); PoolableSprite FirstTile; if (TilePools[rand_idx].GetAvailable(false, out FirstTile)) { FirstTile.transform.SetParent(transform); FirstTile.transform.localPosition = Vector3.zero; LastTile = FirstTile; ActiveTiles.Add(FirstTile); } ScreenPosition = GameCore.Instance.GameCamera.WorldToScreenPoint(transform.position); // Spawn the first tiles on the right bool bContinue = true; do { SpawnGroundTile(); Vector3 NextTileScreenPosition = GameCore.Instance.GameCamera.WorldToScreenPoint(LastTile.transform.position); bContinue = NextTileScreenPosition.x - ScreenPosition.x < Screen.width * 1.3333f; }while (bContinue); }
void SpawnGroundTile() { PoolableSprite NextTile; int rand_idx = Random.Range(0, TilePools.Count); if (TilePools[rand_idx].GetAvailable(false, out NextTile)) { NextTile.transform.SetParent(transform); Vector3 NextPos = LastTile.transform.position; NextPos.x += LastTile.Renderer.bounds.extents.x + NextTile.Renderer.bounds.extents.x; NextTile.transform.position = NextPos; LastTile = NextTile; ActiveTiles.Add(NextTile); } }
void SetFiring(bool firing) { if (firing) { isFiring = true; for (int i = 0; i < laserLength; i++) { PoolableSprite beam = beamPool.GetPooled().GetComponent <PoolableSprite>(); if (verticalFire) { beam.transform.position = firingPosition.position + new Vector3(0, i * laserPieceLength); } else { beam.transform.position = firingPosition.position + new Vector3(i * laserPieceLength, 0); } beam.gameObject.SetActive(true); beam.SendMessage("SetTurret", transform); beams.Add(beam); } end = endPool.GetPooled().GetComponent <PoolableSprite>(); if (verticalFire) { end.transform.position = firingPosition.position + new Vector3(0, (laserLength) * laserPieceLength); } else { end.transform.position = firingPosition.position + new Vector3((laserLength) * laserPieceLength, 0); } end.gameObject.SetActive(true); end.SendMessage("SetTurret", transform); StartCoroutine(Timers.Countdown <bool>(onTime, SetFiring, false)); } else { isFiring = false; TurnOffBeams(); StartCoroutine(Timers.Countdown <bool>(offTime, SetFiring, true)); } }