销毁对象时如何使用启动?

时间:2019-05-23 17:36:18

标签: c# unity3d

我正在尝试编写代码,使我可以点击对象并将其销毁,当它消失时,爆炸效果会在被销毁对象的位置上播放一次,或者新对象产生于先前对象所在的位置。

我试图寻找一些有关如何编码“单击对象”功能并将其销毁的教程。我能够做到这一点,但是却无法产生任何东西。

using System.Collections.Generic;
using System.Collections;
using UnityEngine;
using System;

public class IceTile : MonoBehaviour
{
internal Vector3 m_MyTravelPoint;
private void Start()
{
    m_MyTravelPoint = transform.position + new Vector3(0, 0.61f, 0);
}
private void OnDrawGizmosSelected()
{
    Gizmos.DrawWireSphere(m_MyTravelPoint, 0.5f);
}
void Update()
{

}
void OnMouseDown()
{
    // this object was clicked - do something

    object Eff_Heal_2_oneShot = null;
    Instatiate(Eff_Heal_2_oneShot, transform.position, 
Quaternion.identity, out hit);
    Destroy(this.gameObject);

}

private void Instatiate(object eff_Heal_2_oneShot, object position, 
Quaternion identity)
{
    throw new NotImplementedException();
}
}

我希望此代码允许我触摸和删除对象并引起爆炸或生成对象,但是我没有成功。

1 个答案:

答案 0 :(得分:0)

首先,摆脱您的自定义Instantiate方法。该对象上已经有一个可以正常工作的Instantiate方法;您不需要再做一个。

然后,将public GameObject explosionEffect字段添加到类中。这将包含您要生成的爆炸预制件。在场景检查器中,将预制件拖到它上。

此外,要使用OnMouseDown检测鼠标单击,您需要将某种Collider组件附加到IceTile的游戏对象上。您可能已经做到了。这可以在场景编辑器中完成。

在调用OnMouseDown之前的Destroy中,调用Instantiate以产生爆炸效果:

Instantiate (explosionEffect, transform.position);

总的来说,看起来像这样:

using System.Collections.Generic;
using System.Collections;
using UnityEngine;
using System;

public class IceTile : MonoBehaviour
{

    internal Vector3 m_MyTravelPoint;
    public GameObject explosionEffect;

    private void Start()
    {
        m_MyTravelPoint = transform.position + new Vector3(0, 0.61f, 0);
    }
    private void OnDrawGizmosSelected()
    {
        Gizmos.DrawWireSphere(m_MyTravelPoint, 0.5f);
    }
    void Update()
    {

    }
    void OnMouseDown()
    {
        // this object was clicked - do something
        Instantiate(explosionEffect, transform.position);
        Destroy(this.gameObject);
    }
}