Ejemplo n.º 1
0
 private void attensionSpan()
 {
     if (target != null && Physics.Raycast(transform.position, (target.transform.position - transform.position).normalized, out hit, Mathf.Infinity, mask))
     {
         curState = logicState.idel;
         target   = null;
     }
 }
Ejemplo n.º 2
0
    /*
     * public logicState GetState()
     * {
     *  return logic;
     * }
     */
    public void loseTarget()
    {
        if (agro == false)
        {
            player = null;
            fov.setTargetNull();

            logic = logicState.roam;
        }
    }
Ejemplo n.º 3
0
    private void FixedUpdate()
    {
        if (!fov.FindTarget())
        {
            if (agro == true)
            {
                Invoke("loseTarget", attentionSpan);
            }
            agro = false;
        }
        else
        {
            if (agro == false)
            {
                logic  = logicState.followTarget;
                player = fov.visibleTarget;
            }
            agro = true;
        }

        switch (logic)
        {
        case logicState.roam:
            break;

        case logicState.followTarget:
            if (player != null && Vector3.Distance(transform.position, player.transform.position) < attackDistance)
            {
                logic = logicState.attack;
            }
            break;

        case logicState.hostile:
            break;

        case logicState.attack:
            if (player != null && Vector3.Distance(transform.position, player.transform.position) > attackDistance)
            {
                logic = logicState.followTarget;
            }
            break;

        default:
            break;
        }
    }
Ejemplo n.º 4
0
 public void SetState(int _num)
 {
     if (_num == 1)
     {
         logic = logicState.roam;
     }
     else if (_num == 2)
     {
         logic = logicState.followTarget;
     }
     else if (_num == 3)
     {
         logic = logicState.hostile;
     }
     else if (_num == 4)
     {
         logic = logicState.attack;
     }
     else
     {
         Debug.Log("stateSet_Incorrect");
     }
 }
Ejemplo n.º 5
0
        public static void eventGameLoad()
        {
            if (!bInit)
            {
                // Init the Menu

                generalUI.genInit(rootMenu,"Ahri", "Ahri");

                // Set up Spells
                spellSetup();

                // Check Summoners - DO LATER
                //PLACEHOLDER

                // Register OnDraw and OnUpdate

                lState = new logicState();

                Game.PrintChat("TEST");
                Drawing.OnDraw += eventGameDraw;
                Game.OnUpdate += eventGameTick;
            }
        }
Ejemplo n.º 6
0
    // Update is called once per frame
    void Update()
    {
        //Animation
        if (navAgent.destination != transform.position)
        {
            anim.SetBool("walk", true);
        }
        else
        {
            anim.SetBool("walk", false);
        }
        GetClosestPlayer();
        if (navAgent != null && !dead)
        {
            switch (curState)
            {
            case logicState.idel:
                switch (type)
                {
                case EnemyType.meele:
                    if (target != null)
                    {
                        curState = logicState.agro;
                    }
                    else
                    {
                        findNearestAlly();
                        if (ally != null && (ally.transform.position - transform.position).magnitude > 5)
                        {
                            newPos   = ally.transform.position + new Vector3(Random.Range(-2, 2), 0, Random.Range(-2, 2));
                            curState = logicState.followPack;
                        }
                        else
                        {
                            if ((newPos - transform.position).magnitude < 10)
                            {
                                newPos = transform.position + new Vector3(Random.Range(-10, 10), 0, Random.Range(-10, 10));
                            }
                            else
                            {
                                navAgent.SetDestination(newPos);
                            }
                        }
                    }
                    break;

                case EnemyType.ranged:
                    once = false;
                    if ((newPos - transform.position).magnitude < 10)
                    {
                        newPos = transform.position + new Vector3(Random.Range(-10, 10), 0, Random.Range(-10, 10));
                    }
                    else
                    {
                        navAgent.SetDestination(newPos);
                    }
                    if (target != null)
                    {
                        curState = logicState.agro;
                    }
                    break;

                default:
                    break;
                }
                break;

            case logicState.followPack:
                switch (type)
                {
                case EnemyType.meele:
                    if (ally != null)
                    {
                        navAgent.SetDestination(newPos);
                        if ((newPos - transform.position).magnitude < 5)
                        {
                            curState = logicState.idel;
                        }
                    }
                    break;

                case EnemyType.ranged:
                    findNearestAlly();
                    if (!once)
                    {
                        once = true;
                        navAgent.SetDestination(allies[Random.Range(0, allies.Length)].transform.position);
                    }
                    if ((target.transform.position - transform.position).magnitude > 10)
                    {
                        curState = logicState.idel;
                    }
                    break;

                default:
                    break;
                }
                break;

            case logicState.agro:
                switch (type)
                {
                case EnemyType.meele:
                    if (target != null)
                    {
                        navAgent.SetDestination(target.transform.position);
                        if (Physics.Raycast(transform.position, (target.transform.position - transform.position).normalized, out hit, Mathf.Infinity, mask))
                        {
                            Debug.DrawLine(transform.position, hit.collider.transform.position, Color.white);
                            Debug.Log(hit.collider.tag);
                            if (hit.collider.tag != "Player")
                            {
                                Invoke("attensionSpan", 2.5f);
                            }
                        }
                        if ((target.transform.position - transform.position).magnitude < 2)
                        {
                            curState = logicState.attack;
                        }
                    }
                    break;

                case EnemyType.ranged:
                    if (target != null)
                    {
                        navAgent.SetDestination(target.transform.position);
                        if (Physics.Raycast(transform.position, (target.transform.position - transform.position).normalized, out hit, Mathf.Infinity, mask))
                        {
                            Debug.DrawLine(transform.position, hit.collider.transform.position, Color.white);
                            Debug.Log(hit.collider.tag);
                            if (hit.collider.tag != "Player")
                            {
                                Invoke("attensionSpan", 5f);
                            }
                        }
                        if ((target.transform.position - transform.position).magnitude < 15)
                        {
                            curState = logicState.attack;
                        }
                    }
                    break;

                default:
                    break;
                }
                break;

            case logicState.attack:
                switch (type)
                {
                case EnemyType.meele:
                    if (target != null)
                    {
                        anim.SetTrigger("attack");
                        if (target != null)
                        {
                            navAgent.SetDestination(target.transform.position);
                            if ((target.transform.position - transform.position).magnitude > 1)
                            {
                                curState = logicState.agro;
                            }
                        }
                        else
                        {
                            curState = logicState.idel;
                        }
                    }
                    break;

                case EnemyType.ranged:
                    anim.SetBool("walk", false);
                    navAgent.SetDestination(transform.position);
                    if (target != null)
                    {
                        transform.LookAt(target.transform.position);
                        if (!rate)
                        {
                            rate = true;
                            Invoke("shoot", rateOfFire);
                        }
                        if ((target.transform.position - transform.position).magnitude > 20)
                        {
                            curState = logicState.agro;
                        }
                        if ((target.transform.position - transform.position).magnitude < 10)
                        {
                            curState = logicState.followPack;
                        }
                    }
                    else
                    {
                        curState = logicState.idel;
                    }
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }
        }
        else
        {
            navAgent.SetDestination(transform.position);
        }
    }