Arriver à contrôler le départ d'un objet sur une spline
Arriver à contrôler le départ d'un objet sur une spline
Bien le bonjour,
Comme dis dans ma présentation je suis un vrai novice du code et j'ai un soucis.
Comment puis-je faire pour pouvoir dire à un objet qui suis déjà une spline, de le faire s'animer à partir d'un moment que j'aurais moi même décidé ?
Merci beaucoup de votre aide
Comme dis dans ma présentation je suis un vrai novice du code et j'ai un soucis.
Comment puis-je faire pour pouvoir dire à un objet qui suis déjà une spline, de le faire s'animer à partir d'un moment que j'aurais moi même décidé ?
Merci beaucoup de votre aide
- artemisart
- Messages : 1893
- Inscription : 21 Juin 2011 19:51
- Localisation : Centre
- Contact :
Re: Arriver à contrôler le départ d'un objet sur une spline
Salut,
Tu utilise quoi pour le spline ? mecanim ? lib de tweening ?
Tu utilise quoi pour le spline ? mecanim ? lib de tweening ?
Re: Arriver à contrôler le départ d'un objet sur une spline
Hello,
Alors c'est difficile de te répondre sans en savoir plus sur le contexte et sans connaître les possibilités du plug-in que tu utilises. Je suppose que tu as déjà cherché la fonctionnalité que tu recherches dans la documentation du plug-in donc je peux juste te donner une façon générique de faire la chose. :S
Si tes splines ne sont pas créées dynamiquement alors t'embête pas, utilise un collider en mode trigger à l'endroit voulu pour déclencher l'animation. Le mieux est de faire un collider sur gameObject vide, enfant de ta spline.
Si l'animation se passe quoiqu'il arrive dans un lieu défini et fixe dans la scène pour toutes tes splines, utilise le même trigger collider sans parent pour toutes les splines.
Se tes splines sont créées dynamiquement:
- utilise le temps pour activer l'anim si le mouvement de l'objet est continu.
- si tu veux faire ça par calcule de distance et que ton plug-in ne te donne aucune solution, même pas une référence des points utilisés pour tracer la spline, alors, si ta spline n'est pas excessivement anguleuse tu peux par exemple tricher en enregistrant dans une variable Vector3 un nouveau point dans l'espace à chaque fois que tu fais x distance (par exemple 1 mètre ou moins) depuis le dernier point, le premier point étant le départ de l'objet et le nouveau point étant à chaque fois la position actuelle de l'objet. Et tu incrémentes la distance ainsi. C'est qu'un exemple hein.
Une fois que tu as cumulé le nombre de mètres voulu tu actives l'anim.
Expliques dans quel contexte tu utilises tes splines pour qu'on puisse vraiment t'aider!
Alors c'est difficile de te répondre sans en savoir plus sur le contexte et sans connaître les possibilités du plug-in que tu utilises. Je suppose que tu as déjà cherché la fonctionnalité que tu recherches dans la documentation du plug-in donc je peux juste te donner une façon générique de faire la chose. :S
Si tes splines ne sont pas créées dynamiquement alors t'embête pas, utilise un collider en mode trigger à l'endroit voulu pour déclencher l'animation. Le mieux est de faire un collider sur gameObject vide, enfant de ta spline.
Si l'animation se passe quoiqu'il arrive dans un lieu défini et fixe dans la scène pour toutes tes splines, utilise le même trigger collider sans parent pour toutes les splines.
Se tes splines sont créées dynamiquement:
- utilise le temps pour activer l'anim si le mouvement de l'objet est continu.
- si tu veux faire ça par calcule de distance et que ton plug-in ne te donne aucune solution, même pas une référence des points utilisés pour tracer la spline, alors, si ta spline n'est pas excessivement anguleuse tu peux par exemple tricher en enregistrant dans une variable Vector3 un nouveau point dans l'espace à chaque fois que tu fais x distance (par exemple 1 mètre ou moins) depuis le dernier point, le premier point étant le départ de l'objet et le nouveau point étant à chaque fois la position actuelle de l'objet. Et tu incrémentes la distance ainsi. C'est qu'un exemple hein.
Une fois que tu as cumulé le nombre de mètres voulu tu actives l'anim.
Expliques dans quel contexte tu utilises tes splines pour qu'on puisse vraiment t'aider!
Re: Arriver à contrôler le départ d'un objet sur une spline
Zut, je suis bête, si tu veux dire faire bouger l'objet au moment voulu il doit forcément y avoir un paramètre dans ton plug-in dédié à ça. Sois qui permet de lancer le mouvement ou au moins de le mettre en pause!
Sinon tu références le script de ton plug-in sur ton objet dans un autre script aussi placé sur ton objet qui va activer/désactiver le script du plug-in. Mais il doit obligatoirement y avoir une méthode directe via ton plug-in, c'est pas possible que le dev ne l'ait pas intégré.
Sinon tu références le script de ton plug-in sur ton objet dans un autre script aussi placé sur ton objet qui va activer/désactiver le script du plug-in. Mais il doit obligatoirement y avoir une méthode directe via ton plug-in, c'est pas possible que le dev ne l'ait pas intégré.
Re: Arriver à contrôler le départ d'un objet sur une spline
Merci beaucoup pour ces réponses je vais tester et je reviens faire un retour
EDIT :
Bon je n'ai pas trouvé mon bonheur, j’espère ne pas être passé à coté.... Exactement ce que j'aimerais, c'est pouvoir mettre une option qui me permet de donner a mon objet un temps de départ genre qu'il bouge au bout de 2secondes.
EDIT :
Bon je n'ai pas trouvé mon bonheur, j’espère ne pas être passé à coté.... Exactement ce que j'aimerais, c'est pouvoir mettre une option qui me permet de donner a mon objet un temps de départ genre qu'il bouge au bout de 2secondes.
Re: Arriver à contrôler le départ d'un objet sur une spline
D'après la doc, essaye:
Ou avec une coroutine:
Code : Tout sélectionner
using UnityEngine;
using SplineUtilities;
public class SplineAnimator : MonoBehaviour
{
public Spline spline;
public WrapMode wrapMode = WrapMode.Clamp;
public float speed = 1f;
public float offSet = 0f;
public float passedTime = 0f;
public float delay = 0f; //ton délai à définir dans l'éditeur
private float delayedStartTime; //pour enregistrer le temps lors de la création de l'objet, important s'il n'apparaît pas au début de la scène (ex: instance)
void OnEnable(){ delayedStartTime = Time.time + delay; }
void Update(){
if(Time.time > delayedStartTime ){
passedTime += Time.deltaTime * speed;
float clampedParam = SplineUtils.WrapValue( passedTime + offSet, 0f, 1f, wrapMode );
transform.position = spline.GetPositionOnSpline( clampedParam );
transform.rotation = spline.GetOrientationOnSpline( clampedParam );
}
}
}
Code : Tout sélectionner
using UnityEngine;
using SplineUtilities;
public class SplineAnimator : MonoBehaviour
{
public Spline spline;
public WrapMode wrapMode = WrapMode.Clamp;
public float speed = 1f;
public float offSet = 0f;
public float passedTime = 0f;
public float delay = 0f; //ton délai à définir dans l'éditeur
private bool moveOnSpline = false; //boolean qui dit si oui ou non l'objet doit bouger
void OnEnable(){
StartCoroutine(StartMoveOnSpline());
}
void Update(){
if(moveOnSpline){
passedTime += Time.deltaTime * speed;
float clampedParam = SplineUtils.WrapValue( passedTime + offSet, 0f, 1f, wrapMode );
transform.position = spline.GetPositionOnSpline( clampedParam );
transform.rotation = spline.GetOrientationOnSpline( clampedParam );
}
}
IEnumerator StartMoveOnSpline(){
yield return new WaitForSeconds(delay);
moveOnSpline = true;
}
}
Re: Arriver à contrôler le départ d'un objet sur une spline
MERCI
C'est parfait il fonctionne très bien ton morceaux de code . Je pense que je reviendrais pour quelques autres questions :p concernant les particules... car la mon projet est d'arriver a faire suivre des particules sur une Spline. Pour le moment j'utilise un système lié à un GameObject qui lui même suit la Spline. Mais le soucis est que les particules ont une gravité de base et cela les empêchent de se coller à la Spline sur la fin de leur vie.
Je posterais surement plus tard un visuel pour partager le résultat
C'est parfait il fonctionne très bien ton morceaux de code . Je pense que je reviendrais pour quelques autres questions :p concernant les particules... car la mon projet est d'arriver a faire suivre des particules sur une Spline. Pour le moment j'utilise un système lié à un GameObject qui lui même suit la Spline. Mais le soucis est que les particules ont une gravité de base et cela les empêchent de se coller à la Spline sur la fin de leur vie.
Je posterais surement plus tard un visuel pour partager le résultat
Re: Arriver à contrôler le départ d'un objet sur une spline
Re les gens, désolé de revenir avec ça mais le plugins Spline n'est pas vraiment au top puisqu'il me permet de créer que 4 nodes, pas plus ....
Première question, est il possible de modifier le code pour en rajouter ?
Si, non quelqu'un aurait la possibilité de faire un bout de script qui colle à ce plugin ITWEEN
Merci d'avance
Première question, est il possible de modifier le code pour en rajouter ?
Si, non quelqu'un aurait la possibilité de faire un bout de script qui colle à ce plugin ITWEEN
Merci d'avance