예제 #1
0
    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);
        }
    }
예제 #2
0
 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);
     }
 }
예제 #3
0
    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);
    }