private GameObject createBot(OnePlayerOperation playerOperation)
        {
            Vector3 position = new Vector3();

            position.x = (float)playerOperation.Position.X / 1000;
            position.y = (float)playerOperation.Position.Y / 1000;
            position.z = (float)playerOperation.Position.Z / 1000;
            GameObject player = Egg.create(playerPrefeb, playerOperation.Id,
                                           null, position
                                           , new Quaternion(0, 0, 0, 0), false);

            return(player);
        }
        private void sendToServer(Vector3 move, bool crouch)
        {
            OnePlayerOperation onePlayerOperation = new OnePlayerOperation();

            onePlayerOperation.Crouch      = crouch;
            onePlayerOperation.Id          = GetComponent <PlayerInfo>().Id;
            onePlayerOperation.Position    = new Position();
            onePlayerOperation.Position.X  = (int)(GetComponent <Transform>().position.x * 1000);
            onePlayerOperation.Position.Y  = (int)(GetComponent <Transform>().position.y * 1000);
            onePlayerOperation.Position.Z  = (int)(GetComponent <Transform>().position.z * 1000);
            onePlayerOperation.Parameter   = new MoveParameter();
            onePlayerOperation.Parameter.X = (int)(move.x * 10);
            onePlayerOperation.Parameter.Y = (int)(move.y * 10);
            onePlayerOperation.Parameter.Z = (int)(move.z * 10);

            playerOperator.sendOperate(onePlayerOperation);
        }
        private void movePlayer(GameObject player, OnePlayerOperation playerOperation)
        {
            Debug.Log("客户端" + player.transform.position);

            Debug.Log("服务器" + playerOperation.Position);
            //判断角色的位置和发送过来的位置有没有差别。若有则先强制更新。
            if (Mathf.Abs((int)player.transform.position.x * 1000 - playerOperation.Position.X) > difference ||
                // Mathf.Abs((int)player.transform.position.y * 1000 - playerOperation.Position.Y )> difference ||
                Mathf.Abs((int)player.transform.position.z * 1000 - playerOperation.Position.Z) > difference)
            {
                player.transform.position = new Vector3((float)playerOperation.Position.X / 1000f, (float)playerOperation.Position.Y / 1000f,
                                                        (float)playerOperation.Position.Z / 1000f);
                Debug.Log("更新了");
            }

            //使该角色移动
            Vector3 server_move = new Vector3((float)playerOperation.Parameter.X / 10,
                                              (float)playerOperation.Parameter.Y / 10,
                                              (float)playerOperation.Parameter.Z / 10);

            ThirdPersonCharacter m_Character = player.GetComponent <ThirdPersonCharacter>();

            m_Character.Move(server_move, playerOperation.Crouch, m_Jump);
        }
Esempio n. 4
0
 public async void sendOperate(OnePlayerOperation onePlayerOperation)
 {
     await call.RequestStream.WriteAsync(onePlayerOperation);
 }