【问题标题】:Object destroys and doesnt play particle system对象破坏且不播放粒子系统
【发布时间】:2017-01-10 07:53:53
【问题描述】:

我是统一编写脚本的新手,我有一个脚本会在对象的健康状况达到0时销毁它@

var EnemyHealth : int = 10;

function DeductPoints (DamageAmount : int) {
    EnemyHealth -= DamageAmount;
}

function Update () {

    if (EnemyHealth <= 0) {
        GetComponent.<ParticleSystem>().Play();
        Destroy(gameObject);
    }
}

当我运行这个脚本时它工作正常,但是当它被销毁时,它不会播放动画并继续销毁它。

【问题讨论】:

  • 你已经破坏了包含粒子系统的游戏对象,所以它也破坏了粒子系统。您需要延迟对象的实际销毁,直到粒子系统播放完毕,或者将粒子系统作为组件放置在空的 GameObject 上并从那里开始播放。

标签: unity3d unityscript


【解决方案1】:

如果你摧毁持有它的物体,粒子系统应该如何播放?

使用自动销毁参数实例化粒子系统的预制件,并且不要使其成为要销毁的对象的子对象。

 if (EnemyHealth <= 0) {
    Instantiate( particlesPrefab, transform.position, transform.rotation ) ;
    Destroy(gameObject);
}

编辑:我认为粒子系统有一个参数可以在发射结束时自动销毁,但我找不到它。您可能需要将脚本添加到包含粒子系统的预制件中,以便在给定延迟后使用Destroy function 的第二个参数将其销毁。

private void Start()
{
    ParticleSystem ps = GetComponent<ParticleSystem>();
    Destroy( gameobject, ps.main.duration ) ;
} 

【讨论】:

  • 感谢您的回答,我会看看我的大脑是否能理解并试一试!谢谢! ^-^
  • 感谢您的帮助:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多