private void Update() { GameObject go = AIUtilities.GetNearestGameObject(gameObject, "Monster", Range, xray: true); target = go; if (target != null && Placed) { if (projectile.GetComponent <TowerProjectile>()) { projectile.GetComponent <TowerProjectile>().target = target; } else if (projectile.GetComponent <TowerRapidProjectile>()) { projectile.GetComponent <TowerRapidProjectile>().target = target; } //Debug.Log(target.name); AimBarrel(target); Fire(target); //Debug.Log((target.transform.position - rangeFinder.transform.position).magnitude); if (!CheckEnemyRange(target)) { target = null; } } }
private void Update() { if (Placed) { GameObject enemy = AIUtilities.GetNearestGameObject(VisionCheck, EnemyTag, Range); if (enemy != null) { Barrel.transform.LookAt(enemy.transform.position + Vector3.up); if (WaitTime <= 0) { GameObject shot = Instantiate(Projectile, Barrel.transform.position + Barrel.transform.forward, Barrel.transform.rotation); Projectile projectile = shot.GetComponent <Projectile>(); projectile.WeaponDamage = Damage; projectile.EnemyTag = EnemyTag; Rigidbody rb = shot.GetComponent <Rigidbody>(); rb.AddForce(Barrel.transform.forward * (ShotSpeed * 10)); rb.useGravity = false; WaitTime = Rate; } else { WaitTime -= Time.deltaTime; } } } }
private void Update() { if (attack != null) { GameObject target = AIUtilities.GetNearestGameObject(spawner.gameObject, attack.Target, xray: true); if (target != null) { spawner.gameObject.transform.LookAt(target.transform); } } }
private void Update() { GameObject go = AIUtilities.GetNearestGameObject(gameObject, attack.Target, 0, attack.Nc.Fov, attack.Nc.SeeThroughWalls); if (go != null && !hit) { hit = true; Damagable health = go.GetComponent <Damagable>(); if (health != null) { health.ApplyDamage(Damage); } if (DestroyOnHit) { Destroy(gameObject); } } }
void Update() { if (ResetTime <= 0) { GameObject enemy = AIUtilities.GetNearestGameObject(gameObject, EnemyTag, TriggerRange, xray: true); if (enemy != null) { ResetTime = Rate; Particles.Play(); GameObject[] monsters = AIUtilities.GetGameObjects(gameObject, EnemyTag, Range); monsters.ToList().ForEach(m => m.GetComponent <Damagable>().ApplyDamage(Damage)); } } else { ResetTime -= Time.deltaTime; } }
void Update() { if (m_navAgent.isOnNavMesh) { var player = AIUtilities.GetNearestGameObject(gameObject, target, range, fov, SeeThroughWalls); //Debug.Log($"Player: {player}"); if (player != null) { Attacking = ((transform.position - player.transform.position).magnitude <= attackRange && AttackTime <= 0); //Debug.Log($"Attacking: {Attacking}"); if (Attacking) { transform.LookAt(player.transform); if (animator != null) { animator.SetTrigger("Attack"); } AttackTime = attackCD; m_navAgent.isStopped = true; } else if ((transform.position - player.transform.position).magnitude <= attackRange) { m_navAgent.isStopped = true; } else { m_navAgent.SetDestination(player.transform.position); m_navAgent.isStopped = false; } } else if (MoveTime <= 0) { if (m_navAgent.isStopped && m_navAgent != null && m_navAgent.isOnNavMesh) { m_navAgent.isStopped = false; } //Debug.Log("Moving"); if (animator != null) { animator.SetTrigger("StopAttack"); } MoveTime = MoveCd; Vector3 target = Vector3.up; if (m_x && m_z) { target = new Vector3(gameObject.transform.position.x + Random.Range(-searchDistance, searchDistance + 1), 0, gameObject.transform.position.z + Random.Range(-searchDistance, searchDistance + 1)); } else if (!m_x && m_z) { target = new Vector3(transform.position.x, 0, gameObject.transform.position.z + Random.Range(-searchDistance, searchDistance + 1)); } else if (m_x && !m_z) { target = new Vector3(gameObject.transform.position.x + Random.Range(-searchDistance, searchDistance + 1), 0, transform.position.z); } if (target != null && m_navAgent != null && m_navAgent.isOnNavMesh) { m_navAgent.SetDestination(target); if (m_weapon != null && !m_weapon.gameObject.activeSelf) { m_weapon.SetActive(true); } } } if (MoveTime > 0 && m_navAgent.destination == transform.position) { MoveTime -= Time.deltaTime; } if (AttackTime > 0) { AttackTime -= Time.deltaTime; } if (animator != null) { animator.SetFloat("Speed", m_navAgent.velocity.magnitude); } } }