我有一个2D游戏。我有一些游戏对象由带有碰撞体的单一形状组成,还有一些由多种形状组成并包含在我添加角色碰撞器的空游戏对象中。 所有游戏对象都添加了粒子系统,并且单个形状的游戏对象按预期工作并在碰撞时爆炸,而多形状对象则不会。
当使用"唤醒时播放"和"循环"来测试它们时,爆炸会按预期工作,但它们不会在碰撞时爆炸。我尝试将粒子系统放在外部游戏对象内部的一个形状上,然后它显示错误缺少组件系统,尝试访问 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 游戏对象形状组成的游戏对象中使用粒子系统时找不到所需的缺失信息。
我错过了什么?
我整理了一下,由于不明白该怎么做和创建黑客而产生了一些问题。
第一个问题是渲染器是在子对象中创建的,因此最好获取所有子对象并遍历这些子对象,然后在每个子对象中禁用渲染器。
我还删除了角色碰撞体,因为不需要并使用球体碰撞体。
然后我取消了运动学检查,因为这已经能够阻止我在空中的游戏对象被踢来踢去,而是在刚体中添加了质量。
在爆炸方法中,我注释掉了删除渲染可见性,因为这干扰了爆炸:
private void Explode()
{
var exp = GetComponent<ParticleSystem>();
exp.Play();
//GetComponent<Renderer>().enabled = false;
Destroy(gameObject, exp.duration);
}
我还延长了粒子系统的启动寿命以超过持续时间。确保物体被破坏时粒子可见。
我仍然需要调整爆炸,但这对我来说是一个巨大的影响。