Un callback que puede ser utilizado para validar en el servidor, el movimiento de objetos cliente de autoridad.
Esta versión del callback funciona con objetos que utiliza física 3D. La función callback puede retorna false para rechazar la solicitud de movimiento completamente. Puede modificar los parámetros del movimiento - que son pasados 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 Vector3 position, ref Vector3 velocity, ref Quaternion 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>().clientMoveCallback3D = 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.