Example #1
0
 private void Action_XO()
 {
     if (chase_idx > -1)
     {
         chase_target.localPosition = get_chaser_position();
         AINav.setWayPoint(chase_target);
     }
 }
Example #2
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 #3
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 #4
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);
        }
    }
Example #5
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 #6
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;
        }
    }