Ejemplo n.º 1
0
    /// <summary>
    /// 라운드가 넘어갈경우나 처음 시작할떄 초기화 해주어야할 변수
    /// </summary>
    public void ResetPlayerVar(byte num, int hp, System.Numerics.Vector3[] p, float[] yRot)
    {
        //클라이언트 플레이어 오브젝트 체력 설정
        for (int i = 0; i < 2; i++)
        {
            var tmpP = playerList[i];
            tmpP.transform.position    = TotalUtility.ToUnityVectorChange(p[i]);
            tmpP.transform.eulerAngles = new Vector3(0, yRot[i], 0);

            if (tmpP.clientCheck)
            {
                tmpP.cam.yRot = yRot[i];
                tmpP.cam.xRot = 0;
            }

            if (tmpP.zoomState)
            {
                tmpP.weaponManagerSc.ZoomChange(tmpP.zoomState = false);
            }

            tmpP.isAlive = true;
            tmpP.animSc.anim.SetBool("Alive", tmpP.isAlive);
        }
        //Send
        NetworkManager.Instance.SendPacket(new Player_Ready(clientPlayerNum), NetworkManager.Protocol.TCP);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 인게임에서 조준(총의 위치와 카메라 위치 변경)Zoom (UI로 넘기는게 좋을거같다)
    /// </summary>
    //public void ZoomUIFunc(bool zoomStateValue)
    //{
    //    //카메라 포지션변경
    //    //cam.GetComponent<CameraManager>().ZoomSetCamPos(zoomStateValue);
    //    //AimImage 변경
    //    aimImageStartPosValue = zoomStateValue ? 0 : 10f;
    //    foreach (var a in aimImage)
    //        a.transform.localPosition = new Vector3(aimImageStartPosValue, 0f, 0f);
    //}

    /// <summary>
    /// when Shoot, Rebound Image Pos Increas
    /// </summary>
    //public void ReboundAimImage()
    //{
    //    foreach (var a in aimImage)
    //    {
    //        //25이상 더이상 안벌어지도록
    //        if (a.localPosition.x >= 30)
    //        {
    //            a.localPosition = Vector3.right * 30f;
    //            ReboundValue = aimImage[0].localPosition.x;
    //            return;
    //        }
    //        //Aim 이동
    //        a.transform.localPosition = a.transform.localPosition + (Vector3.right * myPlayer.weaponManagerSc.currentUsingWeapon.reboundIntensity);
    //        //a.Translate(a.transform.right * myPlayer.weaponManagerSc.currentUsingWeapon.reboundIntensity);
    //        ReboundValue = aimImage[0].localPosition.x;
    //    }
    //}

    /// <summary>
    /// Return Aim Image
    /// </summary>
    //private void ReturnAimImage()
    //{
    //    if (aimImage[0].localPosition.x.Equals(aimImageStartPosValue))
    //        return;

    //    if (myPlayer == null)
    //        return;
    //    foreach (var a in aimImage)
    //    {
    //        a.localPosition = Vector3.Slerp(a.transform.localPosition,
    //            new Vector3(aimImageStartPosValue, 0, 0), Time.deltaTime * myPlayer.weaponManagerSc.currentUsingWeapon.reboundRecoveryTime);
    //    }
    //    ReboundValue = aimImage[0].localPosition.x;
    //}

    /// <summary>
    /// Cam Rebound
    /// </summary>
    public void ReboundPlayerRotation()
    {
        var reboundValue = myPlayer.weaponManagerSc.currentUsingWeapon.reboundIntensity;

        cam.yRot += Random.Range(-reboundValue * 0.1f, reboundValue * 0.1f);
        cam.xRot += (reboundValue * 0.05f);
        NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
    }
Ejemplo n.º 3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="clientNum"></param>
 /// <param name="pos"></param>
 /// <param name="dir"></param>
 public override void ShootSendServer(byte clientNum, Vector3 pos, Vector3 dir)
 {
     base.ShootSendServer(clientNum, pos, dir);
     if (shootPeriodCount > ShootPeriod)
     {
         NetworkManager.Instance.SendPacket(new Use_Item(clientNum, TotalUtility.ToNumericVectorChange(pos), TotalUtility.ToNumericVectorChange(dir)), NetworkManager.Protocol.TCP);
         shootPeriodCount = 0;
     }
     shootPeriodCount++;
 }
Ejemplo n.º 4
0
    /// <summary>
    /// 서버로 전송
    /// </summary>
    /// <param name="clientNum"></param>
    /// <param name="pos"></param>
    /// <param name="dir"></param>
    public override void ShootSendServer(byte clientNum, Vector3 pos, Vector3 dir)
    {
        base.ShootSendServer(clientNum, pos, dir);
        if (!weaponState)
        {
            return;
        }
        //서버에서 한번만 보내도록 설정
        weaponState = false;

        NetworkManager.Instance.SendPacket(new Use_Item(clientNum, TotalUtility.ToNumericVectorChange(pos), TotalUtility.ToNumericVectorChange(dir)), NetworkManager.Protocol.TCP);
    }
Ejemplo n.º 5
0
    private void OnTriggerEnter(Collider other)
    {
        if (!myPlayer.clientCheck)
        {
            return;
        }

        if (other.transform.tag == "Ground")
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(myPlayer.lookTarget), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Grounded(myPlayer.clientNum, true), NetworkManager.Protocol.TCP);
        }
    }
Ejemplo n.º 6
0
    /// <summary>
    /// Send KeyData
    /// </summary>
    protected void SendKeyData()
    {
        //Move Direction Key
        if (Input.GetKeyDown(KeyList[(int)Key.W]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.W, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyDown(KeyList[(int)Key.S]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.S, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyDown(KeyList[(int)Key.A]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.A, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyDown(KeyList[(int)Key.D]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.D, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.W]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.W, false), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.S]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.S, false), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.A]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.A, false), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.D]))
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.D, false), NetworkManager.Protocol.TCP);
        }

        //Run
        if (Input.GetKeyDown(KeyList[(int)Key.LeftShift]))
        {
            //if (myPlayer.currentActionState == (ActionState.None) || myPlayer.currentActionState == ActionState.Walk)
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.LeftShift, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.LeftShift]))
        {
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.LeftShift, false), NetworkManager.Protocol.TCP);
        }

        //Seat
        if (Input.GetKeyDown(KeyList[(int)Key.LeftControl]))
        {
            //if (myPlayer.currentActionState == (ActionState.None))
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.LeftControl, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.LeftControl]))
        {
            //if (myPlayer.currentActionState == (ActionState.Seat))
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.LeftControl, false), NetworkManager.Protocol.TCP);
        }
        //Creep
        if (Input.GetKeyDown(KeyList[(int)Key.Z]))
        {
            //if (myPlayer.currentActionState == (ActionState.None))
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Z, true), NetworkManager.Protocol.TCP);
        }
        if (Input.GetKeyUp(KeyList[(int)Key.Z]))
        {
            //if (myPlayer.currentActionState == (ActionState.SlowWalk))
            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Z, false), NetworkManager.Protocol.TCP);
        }
        //Jump
        if (Input.GetKeyDown(KeyList[(int)Key.Space]))
        {
            if (myPlayer.IsGroundedFromServer)
            {
                NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Space, true), NetworkManager.Protocol.TCP);
            }
        }

        //장전중일땐 안되도록 설정
        if (!myPlayer.weaponManagerSc.ReloadingAnim)
        {
            //WeaponSwap
            if (Input.GetKeyDown(KeyList[(int)Key.Alpha1]))
            {
                //이미 장착한 번호와 같은경우 전송 안되도록
                if (myPlayer.weaponManagerSc.currentUsingWeapon.equipWeaponNum != 0)
                {
                    NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Alpha1, true), NetworkManager.Protocol.TCP);
                }
            }
            else if (Input.GetKeyDown(KeyList[(int)Key.Alpha2]))
            {
                if (myPlayer.weaponManagerSc.currentUsingWeapon.equipWeaponNum != 1)
                {
                    NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Alpha2, true), NetworkManager.Protocol.TCP);
                }
            }
            else if (Input.GetKeyDown(KeyList[(int)Key.Alpha3]))
            {
                if (myPlayer.weaponManagerSc.currentUsingWeapon.equipWeaponNum != 2)
                {
                    //해당 dictionary가 존재하지 않으면 하지 않음(수류탄을 던졌을경우)
                    if (myPlayer.weaponManagerSc.EquipweaponDic[2].weaponState.Equals(true))
                    {
                        NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Alpha3, true), NetworkManager.Protocol.TCP);
                    }
                }
            }
            //음식은 애니매이션 구현이 안되어있어서 아예 안건드는게 좋을듯
            //else if (Input.GetKeyDown(KeyList[(int)Key.Alpha4]))
            //{
            //    if (myPlayer.weaponManagerSc.currentUsingWeapon.equipWeaponNum != 3)
            //    {
            //        //해당 dictionary가 존재하지 않으면 하지 않음(수류탄을 던졌을경우)
            //        if (myPlayer.weaponManagerSc.EquipweaponDic[3].weaponState.Equals(true))
            //            NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.Alpha4, true), NetworkManager.Protocol.TCP);
            //    }
            //}
            //Shooting
            if (Input.GetMouseButton(0))
            {
                myPlayer.weaponManagerSc.SendUseItemToServer();
            }
            //Zoom
            if (Input.GetMouseButtonDown(1))
            {
                if (myPlayer.weaponManagerSc.currentUsingWeapon.zoomPossible)
                {
                    NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.RClick, myPlayer.zoomState.Equals(true) ? false : true), NetworkManager.Protocol.TCP);
                }
            }

            if (Input.GetKeyDown(KeyList[(int)Key.R]))
            {
                if (myPlayer.weaponManagerSc.currentUsingWeapon.type.Equals(ItemType.WEAPON))
                {
                    if (myPlayer.weaponManagerSc.currentUsingWeapon.GetComponent <ARBase>().currentItemValue < 30)
                    {
                        NetworkManager.Instance.SendPacket(new Player_Input(myPlayer.clientNum, Key.R, true), NetworkManager.Protocol.TCP);
                    }
                }
            }
        }

        //Turning Send
        if (Mathf.Abs(Input.GetAxis("Mouse X")) > 0 || Mathf.Abs(Input.GetAxis("Mouse Y")) > 0)
        {
            NetworkManager.Instance.SendPacket(new Player_Info(myPlayer.clientNum, TotalUtility.ToNumericVectorChange(cam.target), TotalUtility.ToNumericVectorChange(myPlayer.transform.position)), NetworkManager.Protocol.UDP);
        }
    }
Ejemplo n.º 7
0
    private void ProcessPacket(IPacket p, NetworkManager.Protocol pt)
    {
        if (pt == NetworkManager.Protocol.TCP)
        {
            if (p is Player_Init)
            {
                //받았을때 클라이언트 생성(아군 적군 모두)
                var s = (Player_Init)p;

                CreatePlayerObject(s.clientIdx, s.hp, TotalUtility.ToUnityVectorChange(s.startPos), s.startLook, s.assign, s.character, s.weapon1, s.weapon2, s.item);
                if (s.assign)
                {
                    NetworkManager.Instance.SendPacket(new Player_Ready(clientPlayerNum), NetworkManager.Protocol.TCP);
                }
            }
            else if (p is Player_Reset)
            {
                var s = (Player_Reset)p;
                ResetPlayerVar(s.clientIdx, s.hp, s.startPos, s.LookPosYrot);
            }
            //else if (p is Round_Start)
            //{
            //    var s = (Round_Start)p;
            //}
            //else if (p is Round_End)
            //{
            //    var s = (Round_End)p;
            //}
            else if (p is Match_End)
            {
                var s = (Match_End)p;
                NetworkManager.Instance.RecvHandler -= ProcessPacket;
            }
            else if (p is Round_Timer)
            {
                //Timer countdown == 0  : 타이머를 시작 1 : 타이머 종료
                var s = (Round_Timer)p;
            }
            else if (p is Player_Input)
            {
                //Player key 관련 처리
                var s = (Player_Input)p;
                if (playerList[s.clientIdx] == null)
                {
                    return;
                }
                playerList[s.clientIdx].KeyDownClient(s.key, s.down);
            }
            else if (p is Player_Grounded)
            {
                //player isGrounded 처리
                var s = (Player_Grounded)p;
                if (playerList[s.clientIdx] == null)
                {
                    return;
                }
                playerList[s.clientIdx].IsGroundedFromServer = s.state;
            }
            else if (p is Use_Item)
            {
                //폭탄 던지기
                var s = (Use_Item)p;
                if (playerList[s.clientIdx] == null)
                {
                    return;
                }
                if (playerList[s.clientIdx] != null)
                {
                    playerList[s.clientIdx].weaponManagerSc.UseItem(s.clientIdx, TotalUtility.ToUnityVectorChange(s.pos), TotalUtility.ToUnityVectorChange(s.rot));
                }
            }
            else if (p is Throw_BombAnim)
            {
                var s = (Throw_BombAnim)p;
                if (playerList[s.clientIdx] != null)
                {
                    playerList[s.clientIdx].animSc.anim.SetTrigger("Shoot");
                }
            }

            else if (p is Player_Sync)
            {
                //체력 설정
                var s = (Player_Sync)p;
            }
            else if (p is Player_Recover)
            {
                var s = (Player_Recover)p;
                if (playerList[s.clientIdx] != null)
                {
                    playerList[s.clientIdx].weaponManagerSc.UseItem(s.clientIdx, Vector3.zero, Vector3.zero);
                }
            }
            else if (p is Player_Dead)
            {
                //주금
                var s = (Player_Dead)p;
                if (playerList[s.clientIdx] != null)
                {
                    playerList[s.clientIdx].Death();
                }
            }
            else if (p is Round_Result)
            {
                var s = (Round_Result)p;
                Debug.Log("Round 결과 패킷 받음");
            }
            else if (p is Match_End)
            {
            }

            //총알 생성
            //폭탄 던지기
            //체력회복
            //주금
            //데미지받는부분

            //else if()
        }
        else
        {
            if (p is Player_Info)
            {
                //싱크(적편에게만 적용)
                var s = (Player_Info)p;
                if (playerList[s.clientIdx] == null)
                {
                    return;
                }

                if (clientPlayerNum != s.clientIdx)
                {
                    var i = s.clientIdx;
                    //Position
                    if (playerList[i] != null)
                    {
                        playerList[i].transform.position = TotalUtility.ToUnityVectorChange(s.pos);

                        playerList[i].lookTarget = TotalUtility.ToUnityVectorChange(s.lookTarget);
                    }
                }
            }
        }
    }