// Start is called before the first frame update public override void Start() { base.Start(); TurnTowardsBehavior turnTowardsBehavior = GetComponentInParent <TurnTowardsBehavior>(); GameObject target = null; shootObjectDetection.CanShoot += (timeSinceLastShot, projectilesActive) => { return(timeSinceLastShot > shootInterval && (maxProjectilesActive < 0 || projectilesActive < maxProjectilesActive)); }; shootObjectDetection.CreateProjectile += () => { GameObject projectile = Instantiate <GameObject>(projectilePrefab); projectile.transform.position = projectileTransform.transform.position; projectile.transform.rotation = projectileTransform.transform.rotation; Rigidbody2D rigidbody = projectile.GetComponent <Rigidbody2D>(); rigidbody.velocity = (target.transform.position - projectile.transform.position).normalized * projectileSpeed; return(projectile); }; shootObjectDetection.OnHit += (projectile, hitObject) => { //Debug.Log("Projectile Hit"); EnemyBehavior enemy = hitObject.GetComponent <EnemyBehavior>(); // filter out hits on enemies that have already been destroyed if (enemy.IsDead) { return(false); } enemy.Health -= projectileDamage; return(true); }; shootObjectDetection.OnTargetChange += (newTarget) => { turnTowardsBehavior.target = newTarget; target = newTarget; }; GameController.instance.OnRoundEnd += (roundNum) => { if (this != null && this.isPlaced) { foreach (HackableTower ht in FindObjectsOfType <HackableTower>().OrderBy(e => Random.value)) { if (ht != null && ht.Hacked) { StartCoroutine(RepairTower(ht)); return; } } } }; }
// Start is called before the first frame update public override void Start() { base.Start(); TurnTowardsBehavior turnTowardsBehavior = GetComponentInParent <TurnTowardsBehavior>(); GameObject target = null; shootObjectDetection.CanShoot += (timeSinceLastShot, projectilesActive) => { return(timeSinceLastShot > shootInterval && (maxProjectilesActive < 0 || projectilesActive < maxProjectilesActive)); }; shootObjectDetection.CreateProjectile += () => { GameObject projectile = Instantiate <GameObject>(projectilePrefab); projectile.transform.position = projectileTransform.transform.position; projectile.transform.rotation = projectileTransform.transform.rotation; Rigidbody2D rigidbody = projectile.GetComponent <Rigidbody2D>(); rigidbody.velocity = (target.transform.position - projectile.transform.position).normalized * projectileSpeed; return(projectile); }; shootObjectDetection.OnHit += (projectile, hitObject) => { //Debug.Log("Projectile Hit"); EnemyBehavior enemy = hitObject.GetComponent <EnemyBehavior>(); // filter out hits on enemies that have already been destroyed if (enemy.IsDead) { return(false); } enemy.Health -= projectileDamage; return(true); }; shootObjectDetection.OnTargetChange += (newTarget) => { turnTowardsBehavior.target = newTarget; target = newTarget; }; OnHacked += (hackedBy) => { shootObjectDetection.enabled = false; }; OnUnhacked += () => { shootObjectDetection.enabled = true; }; }