Bonjour à vous tous, quelqu'un aurais des exemples sur l'utilisation de la fonction spline ReverseFlow via un script ?
J'ai compris comment l'utiliser dans l'éditeur pour inverser le sens de direction de Spline Animation, mais rien trouver en script C#.
Ma spline contient que 2 points, je veut juste inverser la direction d'animation
Merci !
ReverseFlow() ?
Re: ReverseFlow() ?
Bonjour,,
tu trouveras par mal d'info ici -> Building better paths while maintaining creative flow with Splines in 2022.2
Concernant la partie script, tu peux te référer à la partie API de la doc -> Spline API documentation
tu trouveras par mal d'info ici -> Building better paths while maintaining creative flow with Splines in 2022.2
Concernant la partie script, tu peux te référer à la partie API de la doc -> Spline API documentation

Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: ReverseFlow() ?
Merci de m'avoir répondu max.
Mais j'ai déjà gratté sur ces liens et, aucun exemple sur l'utilisation de cette fonction qui sert à inverser le sens d'animation.
Je me trompe peut-être sur son l'utilisation. Je cherche juste à inverser le sens d'animation de l'objet qui suit cette spline.
Je ne pensais pas que ce soit aussi galère pour trouver des infos pour une simple action comme celle-ci.
Pourtant, il y a l'option pong dans l'animation de Spline Animation. Un reverse pilotable dois bien être possible.
Je continue à chercher.
Mais j'ai déjà gratté sur ces liens et, aucun exemple sur l'utilisation de cette fonction qui sert à inverser le sens d'animation.
Je me trompe peut-être sur son l'utilisation. Je cherche juste à inverser le sens d'animation de l'objet qui suit cette spline.
Je ne pensais pas que ce soit aussi galère pour trouver des infos pour une simple action comme celle-ci.
Pourtant, il y a l'option pong dans l'animation de Spline Animation. Un reverse pilotable dois bien être possible.
Je continue à chercher.
Re: ReverseFlow() ?
Retour de petite experience sur l'inversion de sens d'animation d'une spline.
La fonction ReverseFlow() -> pas réussi a l'utiliser correctement ( je pense)
Du coup, j'ai fait autrement en utilisent la fonction SetKnot() ci-dessous :
chariotPosition : position actuel de l'objet cableAnimator à animer
newPlotPos : destination souhaitée
knot0 : point de départ de la spline
knot1 : point d'arrivée de la spline
knot0.Position et knot1.Position ( je donne une nouvelle position au points)
SetKnot(0, knot0) et SetKnot(1, knot1) j'applique les nouvelles positions
cableAnimator.transform.position = newSiLoPos : je reposition mon objet car il se teleporte à la nouvelle position
.ElapsedTime = 0 : reset du temps passé l'animation
Bon, c'est peut-etre un peut bricolage mais sa à le merite de fonctionner.
La fonction ReverseFlow() -> pas réussi a l'utiliser correctement ( je pense)
Du coup, j'ai fait autrement en utilisent la fonction SetKnot() ci-dessous :
Code : Tout sélectionner
if (moveToZone)
{
chariotPosition = cableAnimator.transform.position;
if (!finDechargement)
{
var newPlotPos = new Vector3(buildingManager.dataManager.plot.transform.position.x, chariotPosition.y, buildingManager.dataManager.plot.transform.position.z);
var newSiLoPos = new Vector3(silPos.x, chariotPosition.y, silPos.z);
var knot0 = _splineContainerChariot.Spline.ToArray()[0];
var knot1 = _splineContainerChariot.Spline.ToArray()[1];
knot0.Position = _splineContainerChariot.transform.InverseTransformPoint(chariotPosition);
knot1.Position = _splineContainerChariot.transform.InverseTransformPoint(newPlotPos);
_splineContainerChariot.Spline.SetKnot(0, knot0);
_splineContainerChariot.Spline.SetKnot(1, knot1);
cableAnimator.transform.position = newSiLoPos;
_splineAnimateChariot.ElapsedTime = 0;
finDechargement = true;
}
_splineAnimateChariot.Play();
zDistChariot = Mathf.Abs(_splineAnimateChariot.ElapsedTime - _splineAnimateChariot.Duration);
moveToZone = zDistChariot > 0.1f;
descent = !moveToZone;
finDechargement = moveToZone;
}
_splineAnimateChariot.Play();
zDistChariot = Mathf.Abs(_splineAnimateChariot.ElapsedTime - _splineAnimateChariot.Duration);
moveToZone = zDistChariot > 0.1f;
finDechargement = moveToZone;
newPlotPos : destination souhaitée
knot0 : point de départ de la spline
knot1 : point d'arrivée de la spline
knot0.Position et knot1.Position ( je donne une nouvelle position au points)
SetKnot(0, knot0) et SetKnot(1, knot1) j'applique les nouvelles positions
cableAnimator.transform.position = newSiLoPos : je reposition mon objet car il se teleporte à la nouvelle position
.ElapsedTime = 0 : reset du temps passé l'animation
Bon, c'est peut-etre un peut bricolage mais sa à le merite de fonctionner.

- boubouk50
- ModoGenereux
- Messages : 6455
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: ReverseFlow() ?
Et il n'y a pas moyen de jouer l'animation à l'envers en mettant la speed à -1 et commençant l'animation avec un Time à 1 ?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: ReverseFlow() ?
Bonjour boubouk50.
J'y avais bien pensé aussi, partant du principe d'animation contrôler. Mais on ne peut renseigner de vitesse négative dans l'inspecteur, il met le speed à 0 systématiquement.
J'y avais bien pensé aussi, partant du principe d'animation contrôler. Mais on ne peut renseigner de vitesse négative dans l'inspecteur, il met le speed à 0 systématiquement.

- boubouk50
- ModoGenereux
- Messages : 6455
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: ReverseFlow() ?
Etrange, je ne vois pas pourquoi, perso.
Sinon, la doc donne le truc : https://docs.unity3d.com/Packages/com.u ... -flow.html
Sinon, la doc donne le truc : https://docs.unity3d.com/Packages/com.u ... -flow.html
- Inverser les knots dans le tableau (le premier devient le dernier)
- Intervertir les In et Out des tangentes Bézier.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: ReverseFlow() ?
(Inverser les knots), s'est ce que j'ai fait justement. Mais faut pas oublier de replacer l'object, sinon il suit la position du knots inversé et se retrouve au point de depart !