Je commence à bricoler avec Unity sur une interaction physique simple, en l'occurence une porte.
J'ai donc une porte qui s'ouvre et se ferme quand je suis dans sa zone d'effet et que j’interagis avec elle via une touche du clavier. Je n'utilise pas d'animation mais je passe bien par une rotation physique de ma porte autour d'un axe matérialisé par un Empty.
Ça fonctionne bien mais un truc me chiffonne, l'angle atteint n'est jamais exactement celui qui est désiré (ici 95°) mais toujours un peu plus (95.006° par exemple).
Code : Tout sélectionner
Vector3 EulerAngles = Porte.transform.rotation.eulerAngles;
if (EulerAngles.y < TargetAngle)
{
Porte.transform.RotateAround(Pivot.transform.position, Vector3.up, Vitesse * Time.deltaTime );
}
De plus avec ce dépassement, pour fermer ma porte je suis dans l'impossibilité d'écrire ceci :
Code : Tout sélectionner
if (EulerAngles.y > 0)
{
Porte.transform.RotateAround(Pivot.transform.position, Vector3.up, -Vitesse * Time.deltaTime );
}
Code : Tout sélectionner
if (EulerAngles.y > 1)
{
Porte.transform.RotateAround(Pivot.transform.position, Vector3.up, -Vitesse * Time.deltaTime );
}