Unity Görsel Efekt: Oynat () etkisizdir
İ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
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;
}
}
}