Descripción

Un callback que puede ser utilizado para validar en el servidor, el movimiento de objetos cliente de autoridad.

Esta versión callback funciona con objetos que usan física 2D. La función callback puede devolver false para rechazar la solicitud de movimiento por completo. También puede modificar los parámetros de movimiento - que se pasan por referencia.

El ejemplo siguiente establece el callback en OnStartServer y desconectará un cliente que mueve un objeto a una posición no válida después de una serie de fallos.

using UnityEngine;
using UnityEngine.Networking;

public class MyMover : NetworkManager { public int cheatCount = 0;

public bool ValidateMove(ref Vector2 position, ref Vector2 velocity, ref float rotation) { Debug.Log("pos:" + position); if (position.y > 9) { position.y = 9; cheatCount += 1; if (cheatCount == 10) { Invoke("DisconnectCheater", 0.1f); } }

return true; }

void DisconnectCheater() { GetComponent<NetworkIdentity>().connectionToClient.Disconnect(); }

public override void OnStartServer() { GetComponent<NetworkTransform>().clientMoveCallback2D = ValidateMove; } }

Este tipo de validación de movimientos en el lado del servidor debe utilizarse conjuntamente con la validación de movimiento del lado del cliente. El callback sólo debe detectar un error si un cliente está omitiendo las comprobaciones de movimiento del lado del cliente mediante el engaño.