// Update is called once per frame void Update() { // Enemy will always face the player and approach them. // If enemy is within shooting range, enemy will attack player. LookAtPlayer(); bool isEnemyInRange = Vector3.Distance(transform.position, player.position) <= shootDitance; if (isEnemyInRange && canMove && enemyHealth.health > 0) { anim.SetBool("isMoving", false); enemyShooting.Shoot(); } else if (canMove == true && enemyHealth.health > 0) { MoveTowardsPlayer(); } // If enemy is stun, decrease the timer to reset enemy movement if (stunTimer <= 0) { canMove = true; } stunTimer -= Time.deltaTime; }
public void AnimShootLaser() { if (battery <= 0) { return; } enemyShooting.Shoot(); battery--; _clipSizeMax--; }
// Update is called once per frame void Update() { _distance = (transform.position - _move.target.position).magnitude; Debug.DrawRay(_enShooting.BulletSpawn.transform.position, _enShooting.BulletSpawn.transform.right * RangeDistance); if (_enShooting.canShoot == true && CanSee()) { if (gameObject.tag == "EnemyType1") { if (hit.collider.tag == "Player") { _enShooting.Shoot(); if (_move.moveSpeed > SlowDownSpeed) { _move.moveSpeed = SlowDownSpeed; } if (hit.distance <= DistanceLimit) { _move.moveSpeed = 0; } } } else if (gameObject.tag == "EnemyType2") { if (hit.collider.tag == "Building") { Debug.Log(hit.collider.tag); _enShooting.Shoot(); if (_move.moveSpeed > SlowDownSpeed) { _move.moveSpeed = SlowDownSpeed; } if (hit.distance <= DistanceLimit) { _move.moveSpeed = 0; } } } } }
// Attack behaviour private void Attack() { if (Vector2.Distance(transform.position, target.position) <= shootDistance || Vector2.Distance(transform.position, targetProjection) <= 2f || groundInfoLeft.collider == false || groundInfoRight.collider == false) { transform.position = Vector2.MoveTowards(transform.position, targetProjection, -movementSpeed * Time.deltaTime); monsterScorpionTurret.Shoot(); timeBtwShots = weaponCoolDown; } else if (Vector2.Distance(transform.position, target.position) >= shootDistance && groundInfoLeft.collider == true && groundInfoRight.collider == true) { transform.position = Vector2.MoveTowards(transform.position, targetProjection, movementSpeed * Time.deltaTime); } }
// Update is called once per frame void Update() { //Debug.LogError(Vector3.Distance(player.transform.position, transform.position)); if (Vector3.Distance(player.transform.position, transform.position) <= Detection) { AI.canSearch = true; GetComponent <AIDestinationSetter>().target = player.transform; enemyShooting.Shoot(); /*Vector2 LookDirection = (Vector2)player.transform.position - rb.position; * float angle = Mathf.Atan2(LookDirection.y, LookDirection.x) * Mathf.Rad2Deg - 90f; * rb.rotation = angle;*/ } else { AI.canSearch = false; } }
void Update() { bool hasLOSToPlayer = AIUtilities.HasLineOfSight(transform.position, player.transform.position, player); if (hasLOSToPlayer) { lastKnownPlayerLocation = player.transform.position; lastKnownVisual.transform.position = lastKnownPlayerLocation; } var aimPos = lastKnownPlayerLocation; aimPos.y = 0; aiming.LookAt(aimPos); if (!hasLOSToPlayer) { confidence += confidenceRegen * Time.deltaTime; } // DEBUG INPUTS if (Input.GetKeyDown(KeyCode.Alpha1)) { AffectConfidence(100f); movement.StopMoving(); } if (Input.GetKeyDown(KeyCode.Alpha2)) { AffectConfidence(-100f); movement.StopMoving(); } Vector3 moveToPoint = Vector3.down; // Getting in cover if (confidence < 50f) { if (hasLOSToPlayer /*&& lastPlayerPos != player.transform.position*/) { moveToPoint = AIUtilities.GetClosestLOSPoint(this, transform.position, player.transform.position, false, player); } // Attacking player } else { if (hasLOSToPlayer) { shooting.Shoot(transform.forward); } else { if (AIUtilities.HasLineOfSight(transform.position, lastKnownPlayerLocation)) { print("has los"); moveToPoint = lastKnownPlayerLocation; } else { print("no los"); moveToPoint = AIUtilities.GetClosestLOSPoint(this, transform.position, lastKnownPlayerLocation, true); } } } if (moveToPoint != Vector3.down && moveToPoint != lastMoveToPoint) { print("<color=red>Moving</color>"); movement.MoveToPoint(moveToPoint); moveToVisual.transform.position = moveToPoint; lastMoveToPoint = moveToPoint; movingToNode = Grid.GetNodeWorldPoint(moveToPoint); } }