Bonjour,
J'ai un problème avec mon code réseau sous Unity.
Je procède comme ça :
- Le client envoi les données du clavier et de la souris au serveur.
- Le serveur envoi la position et la rotation résultantes à tous les clients (y compris l'envoyeur).
- Les client fusionnent leur position et rotation avec celles reçues du serveur comme ceci :
Tout fonctionne correctement, même quand je fonce dans des objets physiques pour essayer de déphaser le client et le serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(Network.isClient){ transform.position = Vector3.Lerp(transform.position, serverPos, Time.deltaTime * 5.0); transform.rotation = Quaternion.Lerp(transform.rotation, serverRot, Time.deltaTime * 5.0); }
Mais ça lag !
Et non seulement ça lag, mais si je bouge violemment la souris le personnage va jusqu'à la rotation désirée pour revenir légèrement en arrière en suite.
Ceci malgré que j'exécute le serveur et le client sur la même machine. J'ose pas imaginer sur un serveur distant avec 80 de ping.
Je suis obligé de faire un Lerp à cause de la physique, mais ça pause problème pour la rotation normale.
Je souhaiterais avoir l'avis de spécialistes pour gérer ça correctement.
Merci.
Partager