【问题标题】:Destroy trail when finished完成后销毁足迹
【发布时间】:2018-04-18 13:07:55
【问题描述】:

我有一个带有轨迹渲染器的导弹。

我想在完成渲染过程后销毁游戏对象(带有轨迹)。

下面的代码不起作用:

private TrailRenderer tr;


public void Start() {
    tr = GetComponent<TrailRenderer>();
}

public void Update() {

    if(tr) {

        if(tr.isVisible == false) {
            Destroy(this.gameObject);
        }
    }
}

【问题讨论】:

  • Debug.Log 放入if(tr.isVisible == false) 中,看看它是否为真。如果没有调用日志,那就是问题所在。还要在if(tr)里面再放一个,看看tr变量在Start函数中是否初始化成功。
  • 我已经将 Debug.log 放入 if (tr.isVisible == false) 中,但没有任何显示。那就是问题所在。是否有其他方法可以检查渲染过程是否完成?
  • iniside if(tr) 怎么样?也必须满足这个条件。 “渲染过程已完成”是什么意思?最好只解释何时应该销毁 TrailRenderer。你目前试图解释这令人困惑
  • 内部 if(tr) 结果为真。这样可行。对于渲染过程,我的意思是当轨迹动画刚刚完成时。然后我想销毁这个对象。
  • 查看 ryeMoss 的回答

标签: c# unity3d game-physics


【解决方案1】:

我假设您希望在最终跟踪段time 的持续时间已过时销毁跟踪渲染器。如果是这样的话,正如 Edge 建议的那样,一旦你的导弹被摧毁或停止移动,你应该在延迟后摧毁:

private TrailRenderer tr;

void Start() {
    tr = GetComponent<TrailRenderer>();
}

public void MissileDestroyed()
{
    Destroy(gameObject, tr.time);
}

【讨论】:

  • 嗯。当我使用此代码时,我的踪迹会在发射导弹后立即消失。这看起来不太好。
  • 你查看过 auto destruct 属性吗?
  • @drpelz 你能告诉我们你的意思吗?就像导弹还在那里并在移动,而踪迹消失了? (当你说释放时,我不确定你是指发射还是摧毁导弹)
  • @Eddge,回头看,我同意 - 将更新答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多