/// <summary> /// by준희, 서버로 부터 받은 패킷값을 Decode. /// </summary> private void DecodeByte() { //by준희, 현재 센서로부터 받아오는 값은 70번~ 77번 (추후 추가를 원할 시 추가가능) //70:screenX, 71:screenY, 72:spinTop, 73:spinSide, 74:shootAng, 75:directionAng, 76:velocity //패킷으로 넘어오는 자료의 형태 :ex) 카테고리_1바이트, 타입_1바이트, 값_4바이트 for (int i = 70; i < 77; i++) { //by준희, byteToArray배열에 넣은 stream데이터중 첫번째 바이트 값을 16진수로 변경해 70~77번인지 확인 if (Convert.ToByte(byteToArray[0]).ToString("X2") == i.ToString()) { //by준희, 카테고리값과 타입을 나타내는 2바이트 배열을 제거.(활용되지 않으므로) byteToArray.RemoveRange(0, 2); //by준희, 값_4바이트를 담을 byte배열 생성 byte[] data = new byte[4]; //by준희, 4바이트로 나눠진 값을 다시 합치기 위해 byte배열에 담는다. for (int t = 0; t < 4; t++) { data[t] = Convert.ToByte(byteToArray[t]); } //by준희, 후입선출로 쌓인 데이터를 역순으로 바꾸어 원래의 데이터로 변환. Array.Reverse(data, 0, 4); //by준희, 각각의 센서 값을 약속에 따라 변경.(현재는 바이트값을 모두 int값으로 변경) switch (i) { case (70): screenX = BitConverter.ToInt32(data, 0); break; case (71): screenY = BitConverter.ToInt32(data, 0); break; case (72): spinTop = BitConverter.ToInt32(data, 0) / 100; break; case (73): spinSide = BitConverter.ToInt32(data, 0) / 100; break; case (74): shootAng = BitConverter.ToInt32(data, 0) / 100; break; case (75): directionAng = BitConverter.ToInt32(data, 0) / 100; break; case (76): velocity = (BitConverter.ToInt32(data, 0)); break; } //by준희, 다음 값을 해독하기 위해 해독한 4바이트를 제거. byteToArray.RemoveRange(0, 4); } } //by준희, 센서값을 생성자로 업데이트 PNCVariable sendData = new PNCVariable(screenX, screenY, spinTop, spinSide, shootAng, directionAng, velocity); //by준희, 센서로 부터 값을 받으면 Unity안에서 게임 실행(Start함수와 같은 역할을 함) if (SceneManager.GetActiveScene().name == "TestScene") { GameManager.StartBall(); //by준희, 패널티킥 모드 } else if (SceneManager.GetActiveScene().name == "PracticeMode") { Prac_SoccerPlayer.StartPlay(); //by준희, 연습모드 } }
void Start() { playerSC = GameObject.FindWithTag("Player").GetComponent <Prac_SoccerPlayer>(); }