} // update void Patrol() { currentPatrolTime += Time.deltaTime; agent.speed = walkSpeed; #region Walk if (agent.velocity.sqrMagnitude > 0) { enemyAnim.Walk(true); } else { enemyAnim.Walk(false); } #endregion if (currentPatrolTime >= patrolTimer) { currentPatrolTime = 0f; SetNewRandomDestination(); } if (Vector3.Distance(transform.position, PlayerPos.position) <= chaseDistance) { enemyBehaviour = EnemyAttackBehaviour.CHASE; } else if (Vector3.Distance(transform.position, PlayerPos.position) > chaseDistance) { enemyBehaviour = EnemyAttackBehaviour.PATROL; } }
void Attack() { Atk = Instantiate(AttackObject, (Vector3)Rigid.position + transform.up, transform.rotation); EnemyAttackBehaviour a = Atk.GetComponent <EnemyAttackBehaviour>(); a.setDamage(damage); a.setForce(force); a.setSpeed(attackSpeed); SoundEffectsScript.Instance.MakeEnemyAttackSound(); }
} // chase void Attack() { agent.velocity = Vector3.zero; agent.isStopped = true; enemyAnim.Walk(false); attackTimer += Time.deltaTime; if (attackTimer > waitBeforeAttack) { transform.LookAt(PlayerPos.position); if (Random.Range(0, 4) > 1) { if (Random.Range(0, 3) > 1) { enemyAnim.Punch1(); } else { if (Random.Range(0, 3) < 1) { enemyAnim.Punch3(); } else { enemyAnim.QuakeKick(); } } } else { enemyAnim.Punch2(); } attackTimer = 0f; } if (Vector3.Distance(transform.position, PlayerPos.position) > attackDistance + waitBeforeChase) { enemyBehaviour = EnemyAttackBehaviour.CHASE; agent.isStopped = false; } } // attack
void Chase() { agent.SetDestination(PlayerPos.position); agent.speed = walkSpeed; agent.isStopped = false; if (Vector3.Distance(transform.position, PlayerPos.position) <= attackDistance) { enemyBehaviour = EnemyAttackBehaviour.ATTACK; } if (agent.velocity.sqrMagnitude > 0) { enemyAnim.Walk(true); } else { enemyAnim.Walk(false); } } // chase
void Start() { enemyBehaviour = EnemyAttackBehaviour.PATROL; }
private IEnumerator MoveBackToPlayer() { yield return(new WaitForSecondsRealtime(0.2f)); enemyBehaviour = EnemyAttackBehaviour.ATTACK; }