我正在尝试编写代码,使我可以点击对象并将其销毁,当它消失时,爆炸效果会在被销毁对象的位置上播放一次,或者新对象产生于先前对象所在的位置。
我试图寻找一些有关如何编码“单击对象”功能并将其销毁的教程。我能够做到这一点,但是却无法产生任何东西。
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();
}
}
我希望此代码允许我触摸和删除对象并引起爆炸或生成对象,但是我没有成功。
答案 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);
}
}