Je débarque sur le forum avec un premier problème que voici :
Cela marche comme je souhaite, mais à la frame où mon point sort de l'Ellipse j'aperçois un gros écart par rapport à la frame précédente (une cinquantaine de pixels) ! En revanche mon point est bien sur une courbe Ellipsoïdale qui semble être la bonne...J'ai une UI Image qui se balade sur mon écran grâce à un Camera.WorldToScreenPoint().
Je souhaite limiter sa position dont les extrêmes forment une ellipse centrée.
En piochant dans Wikipedia j'ai pu trouver les formules qui m'intéressent, voila ma logique :
- Je test si mon point est en dehors de l'Ellipse
- Si non, je laisse mon point ou il est
- Si oui, je calcul l'angle entre les abscisses et ce point
- Puis je me sers de cette angle pour calculer sa position sur l'ellipse
L'écart diminue lorsque le point s'approche d'un des deux axes...
Je vous laisse mon code, est-ce que je suis passé à côté de quelque chose, est-ce que je dois revoir ma logique ?
Bisous
Code : Tout sélectionner
// screenPositionFromCenter est un Vector2 qui est la position de mon UI Image à partir du centre de l'écran
float longueur = Rayon;
float largeur = Rayon / 2;
float ellipse = (screenPositionFromCenter.x * screenPositionFromCenter.x) /
(longueur * longueur) +
(screenPositionFromCenter.y * screenPositionFromCenter.y) /
(largeur * largeur);
float angle = Vector2.Angle (Vector2.right, screenPositionFromCenter);
if (screenPositionFromCenter.y < 0)
angle *= -1;
if (ellipse >= 1) {
screenPositionFromCenter.x = longueur * Mathf.Cos (angle * Mathf.Deg2Rad);
screenPositionFromCenter.y = largeur * Mathf.Sin (angle * Mathf.Deg2Rad);
}