2 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
考慮到您尚未將粒子系統(tǒng)作為游戲?qū)ο蟮淖訉?duì)象,請(qǐng)嘗試以下操作:
public GameObject explosion; //drag the particle system prefab here
private void OnTriggerEnter2D(Collider2D enter)
{
if (enter.gameObject.tag.Equals("Player")) //when the enemy collides with the Player
{
HartCount.HartValue -= 1;
GameObject particle = Instantiate (explosion, this.transform.position, Quaterion.identity);
particle.GetComponent<ParticleSystem>().Play();
Destroy(this.gameObject);
}
}
確保粒子系統(tǒng)放大到足夠大,以便它實(shí)際上可見。上面的代碼將在敵人的位置生成一個(gè)您選擇的粒子系統(tǒng)(您已將其拖入編輯器中的“爆炸”字段中的粒子系統(tǒng))。

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
因此,經(jīng)過一番挖掘,我找到了導(dǎo)致您問題的可能原因。
粒子系統(tǒng)不會(huì)觸發(fā) OnCollisionEnter 和 OnTriggerEnter 事件。
相反,它們會(huì)觸發(fā)一個(gè)自定義事件,即OnParticleCollision。
本質(zhì)上,可以在粒子系統(tǒng)對(duì)象以及被擊中的對(duì)象上調(diào)用此方法。
你可以這樣使用它:
public ParticleSystem explosion;
private void OnParticleCollision(GameObject other)
{
? ? if (other.tag.Equals("Player"))
? ? {
? ? ? ? HartCount.HartValue -= 1;
? ? ? ? gameObject.GetComponent<ParticleSystem>().Play();
? ? ? ? Destroy(this.gameObject);
? ? }
}
請(qǐng)注意,這是您的代碼的改編副本。
它實(shí)際上還有一個(gè)問題:
你玩了粒子系統(tǒng),但之后你直接銷毀了游戲?qū)ο螅虼肆W酉到y(tǒng)也消失了。
注 1:
文檔缺乏有關(guān)如何檢索有關(guān)粒子碰撞的更多信息的明確信息。
鏈接頁面中的示例代碼使用如下內(nèi)容:
var collisionEvents = new List<ParticleCollisionEvent>();
myParticles.GetCollisionEvents(other, collisionEvents);
其中 myParticles 是對(duì)粒子系統(tǒng)的引用。
但是,沒有關(guān)于此方法的文檔。
相反,有一些關(guān)于過時(shí)的靜態(tài)GetCollisionEvent 的
文檔 ,我想該文檔已經(jīng)過時(shí)了,因此您應(yīng)該使用非靜態(tài)方法。
注 2:
我不確定為什么敵人能夠擊中你的玩家,根據(jù)文檔,這是不應(yīng)該發(fā)生的。
但也許我只是誤解了一些東西。
- 2 回答
- 0 關(guān)注
- 238 瀏覽
添加回答
舉報(bào)