Unity Görsel Efekt: Oynat () etkisizdir

Sep 11 2020

İlk görsel efektlerimi yapıyorum ve gemim uçarken etki yaratıyorum. Bu yüzden sadece gemi hareket ederken oynamak istiyorum. Sanırım kolay, Play () diyorsunuz, oynayacak. Durdur () oynarsanız durur. Ama oyun dediğimde hiçbir şey olmuyor.

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

Initial Event Name OnPlay'e izin verdiğimde, olması gerektiği gibi çalıyor. Ama senaryodan hiçbir şey yok ... Burada ne eksik?

Yanıtlar

2 Zechy Sep 11 2020 at 00:30

Tamam ... İlk başta bir iç özellik olmasını bekliyordum VisualEffect, bu bana oynayıp oynamadığını söyleyecek ... Ama bu şekilde hiçbir şey bulamadım. O zaman sadece oyunu aradığınızda çok büyük bir sorun olmadığını düşünüyordum ...

Ama görünüşe göre ... @DMGregory'nin önerdiği gibi, sadece bir kez Play () 'i çağırıyorum, eğer oynuyorsa, durumu tutmak için özel değişken ekledim.

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