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); }
public async void sendOperate(OnePlayerOperation onePlayerOperation) { await call.RequestStream.WriteAsync(onePlayerOperation); }