Unity Visual Effect: Play () non ha alcun effetto
Faccio i miei primi effetti visivi, e li realizzo quando la mia nave sta volando. Quindi voglio giocarci solo quando la nave si sta effettivamente muovendo. Suppongo che sia facile, chiami Play (), verrà riprodotto. Suoni Stop () si fermerà. Ma quando chiamo play, non succede niente.
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();
}
}
Quando lascio in Initial Event Name OnPlay, sta giocando come dovrebbe essere. Ma niente dal copione ... Cosa mi manca qui?
Risposte
Ok ... All'inizio mi aspettavo che ci fosse qualche attributo interno VisualEffect, che mi dirà se sta suonando o no ... Ma non ho trovato nulla in quel modo. Quindi ho pensato che non è un grosso problema, quando chiami il gioco ...
Ma a quanto pare è ... Come suggerisce @DMGregory, chiamo solo Play () una volta, aggiunta la variabile personalizzata per mantenere lo stato, se sta riproducendo.
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;
}
}
}