如何在 Unity 中启用碰撞时的粒子系统?

How do I enable a particle system on collision in Unity?

我正在制作一款地球被陨石撞击的游戏。我已经对撞击地球的陨石进行了编程,并且两种形状都有一个球体对撞机。我还设计了爆炸粒子。

但是,我不知道陨石撞击地球后如何触发爆炸。

这是我的代码:

地球自转脚本

using System.Collections.Generic;
using UnityEngine;

public class orbit : MonoBehaviour
{
    public Transform world;
    public float rotationSpeed=1f;
    // Start is called before the first frame update
    void Start()
    {
        world = GetComponent<Transform>();
        
        
        Debug.Log("this works on the first frame");
    }

    // Update is called once per frame
    void Update()
    {
        //code for rotating the earth
        world.Rotate(new Vector3(0, rotationSpeed, 0), Space.World);
    }
}

Earth object

为此,您必须在两个元素(地球和陨石)上添加刚体并激活“触发器”选项,但只能在其中一个上进行。 (例如地球)。

在您添加的脚本中添加一个新函数(地球自转的片段)。

添加一个新变量(带有粒子的预制件)。

在你的粒子系统上激活“Play on Awake”和“Stop action”来摧毁。

public GameObject explosionPrefab;

void OnCollisionEnter(Collision collision)
{
    ContactPoint contact = collision.contacts[0];
    Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
    Vector3 pos = contact.point;

    GameObject explosionParticle = Instantiate(explosionPrefab, pos, rot);
}