Ok bon ... Je reprends ^^
Donc, mon projet se constitue en 2 parties :
La première est totalement externe à unity et fonctionne sur un serveur. Elle permet d'effectuer de nombreux calculs en rapport avec mon bateau comme son enfoncement dans l'eau, sa vitesse, son tangage, roulis, etc etc.
Mon objectif est donc d'avoir une visualisation graphique de ces calculs, pour celà j'ai donc une seconde partie qui est sous Unity. Le bateau doit bouger en fonction des données envoyées par le programme de calcul.
J'ai donc créé dans un premier temps un rendu 3D d'un bateau que j'ai ajouté dans ma scène, une fois ca fait, j'ai ajouté un plan d'eau à l'aide de ce repo github (
https://github.com/eliasts/Ocean_Community_Next_Gen).
Je dois désormais faire en sorte que ce bateau bouge.
Pour celà j'ai décidé de faire communiquer mon programme de calcul et Unity par socket UDP.
La communication fonctionne de la facon suivante :
> Unity est considéré comme le serveur et est en écoute sur un port bien précis (5001)
> Le programme de calcul lui envoie un objet "serialized" contenant toutes les valeurs citées précédemment, donc vitesse, roulis, etc.
> Le programme de calcul envoie un objet 1 fois toutes les 60ms, mon but est d'avoir une visualisation sous Unity en temps réel ou presque.
> Une fois l'objet recu par Unity, je le deserialize et transforme en un objet de type "waves".
> Ma classe "waves" a exactement la même structure que celle envoyée par le programme de calcul.
La voici : Code : Tout sélectionner
[Serializable]
public class waves
{
public double a { get; set; }
public double l { get; set; }
public double st { get; set; }
public double v { get; set; }
public double nx { get; set; }
public double ny { get; set; }
public double rotate { get; set; }
public double dpl { get; set; }
public double roulis { get; set; }
public int oscillation { get; set; }
public int rolls { get; set; }
public double h { get; set; }
public double rud_angle { get; set; }
public double rpm { get; set; }
}
Je dois donc maintenant faire bouger mon bateau à l'aide des données contenues dans cet objet.
Par exemple si monObjet.hauteur = 10
Alors dans ce cas-là mon bateau doit se trouver en position.y = 10
Pour le moment je fais bouger mon objet de la facon suivante :
Code : Tout sélectionner
public Vector3 newPos;
newPos = new Vector3(newPos.x, (float)Network.wave.h, newPos.z);
transform.position = newPos;
Comme on peut le voir dans le code ci-dessus j'ai une classe "Network" qui assure donc le processus de communication décris précédemment.
Le souci étant qu'avec cela mon bateau a un effet de lag, car j'apelle ce code dans le gameLoop d'Unity, la fonction FixedUpdate()
J'espère avoir été clair ce coup-ci
Merci pour ton aide.