Effet visuel Unity: Play () n'a aucun effet
Je fais mes premiers effets visuels, et je fais de l'effet, quand mon vaisseau vole. Je ne veux donc y jouer que lorsque le vaisseau se déplace réellement. Je suppose que c'est facile, vous appelez Play (), ça va jouer. Vous jouez Stop () il s'arrêtera. Mais quand j'appelle jouer, rien ne se passe.
public void Update()
{
_ship.Rotate(Input.GetAxis("Horizontal"));
var move = Input.GetAxis("Vertical");
_ship.Move(move);
if (move > 0)
{
FlyEffect.Play();
FlyEffect.SetVector3("Velocity", new Vector3(0, -_ship.Speed * move, 0));
}
else
{
FlyEffect.Stop();
}
}
Quand je laisse entrer le nom de l'événement initial OnPlay, il joue comme il se doit. Mais rien dans le scénario ... Qu'est-ce qui me manque ici?
Réponses
Ok ... Au début, je m'attendais à ce qu'il y ait un attribut interne VisualEffect, qui me dira si c'est en train de jouer ou non ... Mais je n'ai rien trouvé de cette façon. Alors je pensais que ce n'était pas vraiment un gros problème, quand vous appelez simplement play ...
Mais apparemment, c'est ... Comme le suggère @DMGregory, j'appelle juste le Play () une fois, ajouté une variable personnalisée pour maintenir l'état, s'il est en cours de lecture.
public void Update()
{
_ship.Rotate(Input.GetAxis("Horizontal"));
var move = Input.GetAxis("Vertical");
_ship.Move(move);
if (move > 0)
{
if (!_isPlaying)
{
FlyEffect.Play();
_isPlaying = true;
}
FlyEffect.SetVector3("Velocity", new Vector3(0, -_ship.Speed * move, 0));
}
else
{
if (_isPlaying)
{
FlyEffect.Stop();
_isPlaying = false;
}
}
}