Example #1
0
    public override void CallBack_NavEnd()
    {
        AINav.clearWaypoints();
        AINav.useNavMeshPathPlanning = false;
        can_contriol = true;

        base.CallBack_NavEnd();
    }
Example #2
0
 private void Action_XO()
 {
     if (chase_idx > -1)
     {
         chase_target.localPosition = get_chaser_position();
         AINav.setWayPoint(chase_target);
     }
 }
Example #3
0
    public void HeadingToGetBall(int res_idx)
    {
        Transform des = GameManager.instance.Respawn_List[res_idx].transform;

        AINav.setWayPoint(des);
        AINav.waypointLoop = false;
        assigned_respawn   = res_idx;
    }
Example #4
0
 // Use this for initialization
 protected virtual void Start()
 {
     attackstates = Attackstates.Patrol;
     player       = GameObject.FindGameObjectWithTag("Player");
     animator     = GetComponent <Animator>();
     navMesh      = GetComponent <NavMeshAgent>();
     FieldOfView  = GetComponent <FieldOfView>();
     audioSource  = GetComponent <AudioSource>();
     Nav          = GetComponent <AINav>();
     Health       = MaxHealth;
 }
Example #5
0
    public void Hide_ToObs()
    {
        Transform des = find_nearest_obs();

        if (des == null)
        {
            Debug.LogError("WHY DESTINATION IS NULL????????");
            return;
        }
        AINav.setWayPoint(des);
        AINav.waypointLoop = false;
    }
Example #6
0
    public void Patrol_Prison()
    {
        Transform[] des = new Transform[2];

        if (is_left_team)
        {
            des[0] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[3].transform : GameManager.instance.NavPoints[7].transform;
            des[1] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[7].transform : GameManager.instance.NavPoints[3].transform;
        }
        else
        {
            des[0] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[15].transform : GameManager.instance.NavPoints[15].transform;
            des[1] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[11].transform : GameManager.instance.NavPoints[11].transform;
        }
        AINav.setWayPoints(des);
        AINav.waypointLoop = true;
    }
Example #7
0
    // Use this for initialization
    protected override void Awake()
    {
        base.Awake();
        //thePlayer = GameObject.FindGameObjectWithTag ("Player");
        theNav = GetComponent <AINav> ();
        // weapon spawn logic TODO: create better way of getting the spawn point in order to avoid confusing developers if they rearrange children
        Transform  spawnPoint   = transform.GetChild(transform.childCount - 1);
        GameObject randomWeapon = Instantiate(weaponToSpawn [Random.Range(0, 2)], spawnPoint.position, spawnPoint.rotation);

        theWeapon = randomWeapon.GetComponent <ProjectileWeapon>();
        randomWeapon.transform.parent = spawnPoint;
        if (theWeapon.theType == ProjectileWeapon.WeaponType.HANDGUN)
        {
            hasHandgun = true;
            theAnim.SetInteger(("WeaponType"), 1);
        }
        else
        {
            theAnim.SetInteger(("WeaponType"), 2);
            hasAssault = true;
        }
    }
Example #8
0
    private void Action_Prison()
    {
        if (chase_bot_idx == -1)
        {
            return;
        }

        Vector3    dir     = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition - transform.localPosition;
        RaycastHit hitInfo = new RaycastHit();

        Debug.DrawRay(transform.position, dir, Color.black, 1);

        if (Physics.SphereCast(transform.position, 0.5f, dir, out hitInfo))
        {
            Vector3 move_dir = transform.localPosition;
            if (hitInfo.transform.CompareTag("Player"))
            {
                Debug.DrawRay(hitInfo.point, hitInfo.normal, Color.red, 1);
                Robot t = hitInfo.transform.GetComponent <Robot>();
                if (t.is_left_team != is_left_team)
                {
                    return;
                }
                if (t.bot_idx != chase_bot_idx)
                {
                    return;
                }
            }
            else
            {
                move_dir.z += (dir.z > 0) ? 1: -1;
                Mathf.Clamp(move_dir.z, -GameManager.instance.Stage_Size / 2, GameManager.instance.Stage_Size / 2);
            }
            chase_target.transform.localPosition = move_dir;
            AINav.setWayPoint(chase_target);
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     _enemyAi   = GetComponent <EnemyAI>();
     _aiNav     = GetComponent <AINav>();
     thisSource = GetComponent <AudioSource>();
 }
Example #10
0
    private void Action_OX()
    {
        switch (Team_State)
        {
        case TeamState.LL:
            if (Play_Style == AIStyle.OFFENSIVE)
            {
                goto case TeamState.MM;
            }
            else
            {
                goto case TeamState.LM;
            }

        case TeamState.LM:     ///// Teammate Revive Action
            chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition;
            AINav.setWayPoint(chase_target);

            Vector3    dir0     = transform.TransformDirection(Vector3.forward);
            RaycastHit hitInfo0 = new RaycastHit();
            Debug.DrawRay(transform.position, dir0, Color.green, 1);

            if (Physics.SphereCast(transform.position, 0.5f, dir0, out hitInfo0))
            {
                if (hitInfo0.transform.CompareTag("Player"))
                {
                    if (hitInfo0.transform.GetComponent <Robot>().is_left_team != is_left_team)
                    {
                        break;
                    }

                    Debug.DrawRay(hitInfo0.point, hitInfo0.normal, Color.red, 1);

                    Shot_Ball();
                    chase_bot_idx = -1;
                    GameManager.instance.Return_ChasingObject(chase_idx);
                    chase_idx = -1;
                    //AINav.clearWaypoints();
                }
            }
            break;

        case TeamState.ML:
        case TeamState.MM:     ////// Enemy Kill Action
        {
            chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition;
            AINav.setWayPoint(chase_target);

            Vector3    dir1     = transform.TransformDirection(Vector3.forward);
            RaycastHit hitInfo1 = new RaycastHit();
            Debug.DrawRay(transform.position, dir1, Color.yellow, 1);

            if (Physics.SphereCast(transform.position, 0.5f, dir1, out hitInfo1))
            {
                Debug.DrawRay(hitInfo1.point, hitInfo1.normal, Color.red, 1);
                if (hitInfo1.transform.CompareTag("Player"))
                {
                    if (hitInfo1.transform.GetComponent <Robot>().is_left_team == is_left_team)
                    {
                        break;
                    }
                    if (hitInfo1.transform.GetComponent <Robot>().bot_area != Bot_Area.INGAME)
                    {
                        break;
                    }

                    Shot_Ball();
                    chase_bot_idx = -1;
                    GameManager.instance.Return_ChasingObject(chase_idx);
                    chase_idx = -1;
                    //AINav.clearWaypoints();
                }
                else if (hitInfo1.transform.CompareTag("Obs"))
                {
                    // 가만히 숨어 있는 경우
                    //if (Play_Style == AIStyle.OFFENSIVE)
                    //{
                    if (exist_prisoner(true))
                    {
                        FindRevive_Teammate();
                    }
                    else
                    {
                        Vector3 dir      = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition - transform.localPosition;
                        Vector3 move_dir = transform.localPosition;
                        move_dir.z += (dir.z > 0) ? 1 : -1;
                        Mathf.Clamp(move_dir.z, -GameManager.instance.Stage_Size / 2, GameManager.instance.Stage_Size / 2);
                        chase_target.transform.localPosition = move_dir;
                        AINav.setWayPoint(chase_target);
                        break;             //////////// 공격 가능한 위치로 이동!! 만들어야됨
                    }
                    //}
                    //else
                    //    Transit_OX();
                    break;         ////// Defensive 일 땐 대기
                }
            }
        }
        break;
        }
    }
Example #11
0
 public void Patrol_Obs()
 {
     Transform[] des = find_patrol_obs();
     AINav.setWayPoints(des);
     AINav.waypointLoop = true;
 }
Example #12
0
    private void Action_OO()
    {
        switch (Team_State)
        {
        case TeamState.LL:
            if (Play_Style == AIStyle.OFFENSIVE)
            {
                goto case TeamState.MM;
            }
            else
            {
                goto case TeamState.LM;
            }

        case TeamState.LM:     ///// Teammate Revive Action
            chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition;
            AINav.setWayPoint(chase_target);

            Vector3    dir0     = transform.TransformDirection(Vector3.forward);
            RaycastHit hitInfo0 = new RaycastHit();
            Debug.DrawRay(transform.position, dir0, Color.blue, 1);

            if (Physics.SphereCast(transform.position, 0.5f, dir0, out hitInfo0))
            {
                if (hitInfo0.transform.CompareTag("Player"))
                {
                    if (hitInfo0.transform.GetComponent <Robot>().is_left_team != is_left_team)
                    {
                        break;
                    }

                    Debug.DrawRay(hitInfo0.point, hitInfo0.normal, Color.red, 1);

                    Shot_Ball();
                    chase_bot_idx = -1;
                    GameManager.instance.Return_ChasingObject(chase_idx);
                    chase_idx = -1;
                    //AINav.clearWaypoints();
                }
            }
            break;

        case TeamState.ML:
        case TeamState.MM:     ////// Enemy Kill Action
        {
            chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition;
            AINav.setWayPoint(chase_target);

            Vector3    dir1     = transform.TransformDirection(Vector3.forward);
            RaycastHit hitInfo1 = new RaycastHit();
            Debug.DrawRay(transform.position, dir1, Color.blue, 1);

            if (Physics.SphereCast(transform.position, 0.5f, dir1, out hitInfo1))
            {
                Debug.DrawRay(hitInfo1.point, hitInfo1.normal, Color.red, 1);
                if (hitInfo1.transform.CompareTag("Player"))
                {
                    if (hitInfo1.transform.GetComponent <Robot>().is_left_team == is_left_team)
                    {
                        break;
                    }
                    if (hitInfo1.transform.GetComponent <Robot>().bot_area != Bot_Area.INGAME)
                    {
                        break;
                    }

                    Shot_Ball();
                    chase_bot_idx = -1;
                    GameManager.instance.Return_ChasingObject(chase_idx);
                    chase_idx = -1;
                    //AINav.clearWaypoints();
                }
            }
        }
        break;
        }
    }