
Désolé d'avance avec les fautes, je suis dysorthographique.
Ma question n'est pas forcément extrêmement précise mais je suis curieux d'avoir l'avis de gens plus expérimenté
Pour le contexte je suis en train d'essayer de crée un controller pour un personnage 2D qui irait un peu plus loin que les sysème très basique que j'ai crée jusqu'ici
Voici la méthode que j'appelle dans FixedUpdate pour gérer mon mouvement sur l'axe X
Code : Tout sélectionner
private void MoveManagement()
{
bool isAccelerating = CurrentDirection.x != 0;
if (!isAccelerating)
{
//deceleration
AccelerationProgress -= Time.fixedDeltaTime / m_decelerationTime;
AccelerationProgress = Mathf.Clamp01(AccelerationProgress);
}
else
{
//acceleration
if (LastVerticalDirectionBeforStop != CurrentDirection.x)
{
//reset acceleration progress if we change direction
LastVerticalDirectionBeforStop = CurrentDirection.x;
AccelerationProgress = 0;
}
AccelerationProgress += Time.fixedDeltaTime / m_accelerationTime;
AccelerationProgress = Mathf.Clamp01(AccelerationProgress);
}
float curveValue = isAccelerating ? m_accelerationCurve.Evaluate(AccelerationProgress) : m_decelerationCurve.Evaluate(1 - AccelerationProgress);
float targetSpeed = m_maxSpeed * curveValue * LastVerticalDirectionBeforStop;
m_rigidBody.linearVelocityX = targetSpeed;
}
Et ensuite grâce au curve (m_accelerationCurve et m_decelerationCurve) ont vas pouvoir faire une accélération/décélération smooth.
Mais si ça vous perd, dite vous que curveValue n'est pas nécessaire et que on pourrait directement la remplacer par AccelerationProgress
le problème c'est que ce script vient constamment reset la vélocité de mon personnage, si un élement exterieurs lui applique une force j'aimerais la garder et que mes inputs viennent simplement la modifier.
J'ai déjà essayer d'utiliser des AddForceX ou de faire des m_rigidBody.linearVelocityX += mais ducoup il dépasse ça maxSpeed, et si je la cappe, les élements exterieurs non plus pourront pas la dépasser.
J'ai aussi éssayer d'utiliser les méthodes style Mathf.Lerp ou Mathf.MoveTowards mais j'avoue que je savais pas trop comment m'y prendre.
Merci pour ce qui prendront le temps de m'aider, j'attends pas forcément une réponse précise, j'ai surtout l'impression que c'est ma manière de voir les choses le problème.