首页 文章

对于由几个游戏对象组件组成的游戏对象,粒子系统行为不同

提问于
浏览
2

我有2D游戏 . 我有游戏对象,这些对象由带有碰撞器的单一形状组成,有些是由几个形状组成的,并且包含在我添加了角色对撞机的空游戏对象中 . 所有游戏对象都添加了粒子系统,单个形状的游戏对象按照预期工作并在碰撞上爆炸,多形状物体不会 .

当使用Play On Awake和循环测试它们时,爆炸按预期工作,但它们不会在onCollision上爆炸 . 我已经尝试将粒子系统放在外部游戏对象内的一个形状上,然后它显示一个错误缺失组件系统,试图访问x对象的粒子系统,这是有道理的 .

在每个游戏对象C#类中,我有以下方法:

private void OnCollisionEnter(Collision coll)
{
    Explode();
}

private void Explode()
{
    var exp = GetComponent<ParticleSystem>();
    exp.Play();
    GetComponent<Renderer>().enabled = false;
    Destroy(gameObject, exp.duration);
}

炸弹的速度设定为0,一次爆炸即可 .

我已经尝试搜索,并且在由多个3D游戏对象形状组成的游戏对象中使用粒子系统时找不到所需的缺失信息 .

我错过了什么?

1 回答

  • 0

    我把它整理出来了,因为不了解要做什么和创造黑客而产生了一些问题 .

    第一个问题是在子对象中创建了渲染器,因此最好获取所有子对象并循环遍历这些对象,然后在每个对象中禁用渲染器 .

    我也删除了角色对撞机,因为这不需要并使用了球体对撞机 .

    然后我取消选中是运动学的,因为这已经能够阻止我在空中的游戏对象被踢,而是我在僵硬的身体中增加了质量 .

    在爆炸方法中,我注释掉了删除渲染可见性,因为这会干扰爆炸:

    private void Explode()
    {
        var exp = GetComponent<ParticleSystem>();
        exp.Play();
        //GetComponent<Renderer>().enabled = false;
        Destroy(gameObject, exp.duration);
    }
    

    我还将粒子系统的起始寿命延长到超过持续时间 . 确保在销毁对象时可见颗粒 .

    我仍然需要调整爆炸,但这给我带来了巨大的影响 .

相关问题