Encore moi
j'aurai besoin d'explication sur un code permettant de modifier la position d'un recttransform de mon canevas de manière douce.
Comme d'hab avec unity pourquoi faire simple alors que cela peux être bien compliqué . j'apprends qu'il n'est pas possible de déplacer un rectransform comme un transform classique et que l'on ne peut donc pas utiliser time.deltatime * facteur.
du coup je regarde sur le net les solution possibles et la solution proposée est d'utiliser une coroutine et .lerp ?!! c'est quoi ça encore
j'utilise le code proposé mais je ne comprend pas bien pourquoi il est nécessaire d'utiliser une coroutine pour faire cela et pour être franc l'intérêt même des coroutines car mon anglais laisse a désirer tout comme les explications claires de la doc unity
du coup la coroutine:
Code : Tout sélectionner
IEnumerator LerpCadreInfoPlanetAffichage()
{
while (currentTime <= timeOfTravel)
{
currentTime += Time.deltaTime;
normalizedValue = currentTime / timeOfTravel; // we normalize our time
CadreInfosPlanet.GetComponent<RectTransform>().anchoredPosition = Vector2.Lerp(startCadreInfosPlanetPosition, endCadreInfosPlanetPosition, normalizedValue);
yield return null;
}
}
Code : Tout sélectionner
void CadreInfoPlanet()
{
if (raycast == true)
{
//la le code pour affecter des valeur aux variables qui servent pour le texte dans mon cadre d'infos puis je lance la coroutine:
StartCoroutine(LerpCadreInfoPlanetAffichage());
}
else // si le raycast ne touche plus de cible
{
//le cadre retourne a sa position initiale
}
}
et de plus l'affichage du cadre fonctionne au premier passage de la souris sur l'object mais pas une seconde fois si je vais dans le vide et que je repointe l'objet! je ne comprends pourquoi cette coroutine ne se lance qu'une seule fois .
j'ai également essayé avec Vector3.SmoothDamp mais la le rectransform ne va pas au bon endroit . (lien du code utilisé: //https://answers.unity.com/questions/1 ... sform.html
Pouvez vous m'aider à comprendre tout cela ?