public override void Fire()
 {
     base.Fire();
     TargetTile.TargetingSetActive(this.TowerKind, true);
     throwSimulator.Shoot(this.transform, this.transform.position, this.TargetTile.transform.position, 10f, 5f, () =>
     {
         TargetTile.TargetingSetActive(this.TowerKind, false);
         Effect.gameObject.SetActive(true);
         Effect.transform.position = new Vector3(transform.position.x, 1f, transform.position.z);
         Effect.Play();
         Hit();
         EventManager.Instance.emit(EVENT_TYPE.TILE_HIT, this, TargetTile);
         StartCoroutine("PositionReset");
     });
 }
 public override void Fire()
 {
     base.Fire();
     TargetTile.TargetingSetActive(this.TowerKind, true);
     throwSimulator.Shoot(this.transform, this.transform.position, this.TargetTile.transform.position, 10f, 5f, () =>
     {
         Effect.gameObject.SetActive(true);
         TargetTile.TargetingSetActive(this.TowerKind, false);
         Effect.transform.position = new Vector3(transform.position.x, 1f, transform.position.z);
         Effect.Play();
         if (dotObject)
         {
             dotObject.SetActive(true);
         }
         Hit();
         StartCoroutine("OneSecTimer");
     });
 }