private void OnAttack(Damageable damageable) { currentAttackNb++; if (damageable.gameObject == GameManager.instance.player.gameObject) { target = GameManager.instance.ramNPC.gameObject; } if (damageable.gameObject == GameManager.instance.ramNPC.gameObject) { target = GameManager.instance.player.gameObject; } if (currentAttackNb < maxAttack) { agent.SetDestination(Tools.RandomPointOnCircle(wanderingDistanceFromCampfire)); agent.speed = speed.min; state = AttackWolfState.GETBACK; attacker.SetEnableAttack(false); } else { agent.SetDestination(transform.position.normalized * (GameManager.instance.zoneRadius + GameManager.instance.enemyGenerator.zoneOffset)); agent.speed = speed.min; state = AttackWolfState.FLEE; attacker.SetEnableAttack(false); } }
private void CheckGetBackState() { if (agent.remainingDistance <= 0.1f) { Vector3 toTargetDirection = (target.transform.position - this.transform.position).normalized; agent.SetDestination(target.transform.position + toTargetDirection * 2.5f); agent.speed = speed.max; state = AttackWolfState.ATTACK; attacker.SetEnableAttack(true); } }
private void Start() { wanderingDistanceFromCampfire.max = GameManager.instance.zoneRadius - 2.0f; attacker.m_attackEvent.AddListener(OnAttack); if (Random.Range(0.0f, 1.0f) > 0.5f) { target = GameManager.instance.player.gameObject; } else { target = GameManager.instance.ramNPC.gameObject; } Vector3 toTargetDirection = (target.transform.position - this.transform.position).normalized; agent.SetDestination(target.transform.position + toTargetDirection * 2.5f); agent.speed = speed.max; state = AttackWolfState.ATTACK; attacker.SetEnableAttack(true); }