Efek Visual Unity: Putar () tidak memiliki efek

Sep 11 2020

Saya membuat efek visual pertama saya, dan saya membuat efek, saat kapal saya terbang. Jadi saya hanya ingin memainkannya saat kapal benar-benar bergerak. Saya kira itu mudah, Anda memanggil Play (), itu akan diputar. Anda memainkan Stop () itu akan berhenti. Tetapi ketika saya menelepon bermain, tidak ada yang terjadi.

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();
    }
}

Ketika saya memasukkan Initial Event Name OnPlay, itu diputar sebagaimana mestinya. Tapi tidak ada dari naskah ... Apa yang saya lewatkan di sini?

Jawaban

2 Zechy Sep 11 2020 at 00:30

Oke ... Awalnya saya berharap ada beberapa atribut dalam VisualEffect, yang akan memberi tahu saya apakah itu diputar atau tidak ... Tapi tidak menemukan apa pun dengan cara itu. Jadi kemudian saya berpikir itu bukan masalah besar, ketika Anda hanya menelepon bermain ...

Tapi ternyata ... Seperti yang disarankan @DMGregory, saya hanya memanggil Play () sekali, menambahkan variabel khusus untuk menahan status, jika sedang diputar.

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;
        }
    }
}