我有2D游戏。我有游戏对象,这些游戏对象由带有碰撞器的单一形状组成,有些是由几个形状组成的,并且包含在我添加了角色对撞机的空游戏对象中。所有游戏对象都添加了粒子系统,单个形状的游戏对象按预期工作并在碰撞上爆炸,多形状物体不会。
当使用Play On Awake和循环测试它们时,爆炸按预期工作,但它们不会在onCollision上爆炸。我已经尝试将粒子系统放在外部游戏对象内的一个形状上,然后它显示一个错误缺失组件系统,试图访问x对象的粒子系统,这是有道理的。
在每个游戏Object 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游戏对象形状组成的游戏对象中的粒子系统时,找不到所需的缺失信息。
我错过了什么?
答案 0 :(得分:0)
我把它整理出来了,因为不了解该做什么以及制造黑客行为而产生了一些问题。
第一个问题是在子对象中创建了渲染器,因此最好获取所有子对象并循环遍历这些对象,然后在每个对象中禁用渲染器。
我还删除了角色对撞机,因为这不需要并使用了球体对撞机。
然后我取消选中是运动学的,因为这可以阻止我在空中的游戏对象被踢,而是我在僵硬的身体中增加了质量。
在爆炸方法中,我注释掉了删除渲染可见性,因为它干扰了爆炸:
private void Explode()
{
var exp = GetComponent<ParticleSystem>();
exp.Play();
//GetComponent<Renderer>().enabled = false;
Destroy(gameObject, exp.duration);
}
我还将粒子系统的开始寿命延长到超过持续时间。确保在物体被摧毁时粒子可见。
我仍然需要调整爆炸,但这给我带来了很大的影响。