// Update is called once per frame void Update() { if (paused) { return; } if (lives == 0) { return; } //Buscar unidades cercanas para atacarlas if (currentState == EnemyState.RUNNING) { currentTarget = UnitiesManager.instance.SearchUnit(transform.position, visionRange); if (currentTarget != null) { //anim.SetTrigger("Idle"); currentState = EnemyState.SEARCHING; agent.SetDestination(new Vector3(currentTarget.transform.position.x, 0.5f, currentTarget.transform.position.z)); } else { float dist = Vector3.Distance(transform.position, goal.transform.position); if (dist <= distToAttack) { ActivateEnd(); } } } else if (currentState == EnemyState.SEARCHING) { if (currentTarget.lives > 0) { float dist = Vector3.Distance(transform.position, currentTarget.transform.position); //Debug.Log("In Search "+dist+" "+distToAttack); if (dist <= distToAttack) { anim.SetTrigger("Idle"); agent.speed = 0; currentState = EnemyState.ATTACKING; } } else { anim.SetTrigger("Run"); currentTimeAttack = 0; currentState = EnemyState.RUNNING; agent.speed = speed; agent.SetDestination(new Vector3(goal.transform.position.x, 0.5f, goal.transform.position.z)); } } else if (currentState == EnemyState.ATTACKING) { if (currentTarget.lives > 0) { currentTimeAttack += Time.deltaTime; if (currentTimeAttack > attackSpeed) { audio.Play(); anim.SetTrigger("Attack"); currentTimeAttack = 0; bool died = currentTarget.ReciveDamage(attackForce); if (died) { anim.SetTrigger("Run"); currentState = EnemyState.RUNNING; agent.speed = speed; agent.SetDestination(new Vector3(goal.transform.position.x, 0.5f, goal.transform.position.z)); } } } else { anim.SetTrigger("Run"); currentTimeAttack = 0; currentState = EnemyState.RUNNING; agent.speed = speed; agent.SetDestination(new Vector3(goal.transform.position.x, 0.5f, goal.transform.position.z)); } } }
// Update is called once per frame void Update() { if (paused) { return; } if (lives == 0) { return; } //Buscar unidades cercanas para atacarlas if (currentState == EnemyState.RUNNING) { currentTarget = UnitiesManager.instance.SearchUnit(transform.position, visionRange); if (currentTarget != null) { currentState = EnemyState.SEARCHING; agent.SetDestination(new Vector3(currentTarget.transform.position.x, 0.5f, currentTarget.transform.position.z)); } else { float dist = Vector3.Distance(transform.position, goal.transform.position); Debug.Log(dist + " " + distToAttack); if (dist <= distToAttack) { lives = 0; GameManager.instance.LoseLive(); EnemyGenerator.instance.RemoveEnemy(this); Destroy(this.gameObject, 0.1f); } } } else if (currentState == EnemyState.SEARCHING) { if (currentTarget.lives > 0) { float dist = Vector3.Distance(transform.position, currentTarget.transform.position); Debug.Log("In Search " + dist + " " + distToAttack); if (dist <= distToAttack) { agent.speed = 0; currentState = EnemyState.ATTACKING; } } else { currentTimeAttack = 0; currentState = EnemyState.RUNNING; agent.speed = speed; agent.SetDestination(new Vector3(goal.transform.position.x, 0.5f, goal.transform.position.z)); } } else if (currentState == EnemyState.ATTACKING) { if (currentTarget.lives > 0) { currentTimeAttack += Time.deltaTime; if (currentTimeAttack > attackSpeed) { currentTimeAttack = 0; bool died = currentTarget.ReciveDamage(attackForce); if (died) { currentState = EnemyState.RUNNING; agent.speed = speed; agent.SetDestination(new Vector3(goal.transform.position.x, 0.5f, goal.transform.position.z)); } } } else { currentTimeAttack = 0; currentState = EnemyState.RUNNING; agent.speed = speed; agent.SetDestination(new Vector3(goal.transform.position.x, 0.5f, goal.transform.position.z)); } } }