我正在制作一个游戏,你可以在远处飞过的敌机上发射弹药。当弹药与飞机碰撞时,实例化粒子系统预制件。这一切都很好,除非飞机转换到显示器的左半部分,爆炸不会发生。它在屏幕的右半部分工作正常。代码如下:这是来自我修改的在线教程添加爆炸。飞机在碰撞时被摧毁,但爆炸只发生在显示器的右半部分。 ammoExplosion是一个公共游戏对象,在类中定义并在检查器中分配。任何建议都表示赞赏。
void OnTriggerEnter2D(Collider2D collider){
if(collider.gameObject.tag == "Ammo"){
GameObject e = Instantiate (ammoExplosion) as GameObject;
e.transform.position = transform.position;
e.renderer.sortingLayerName = "Foreground";
e.renderer.sortingOrder = 13;
Destroy (transform.gameObject); // Destroy fighter.
Destroy (collider.gameObject); // Destroy ammo.
Destroy (e,0.7f);
}
}
答案 0 :(得分:1)
最常见的是我在定位和粒子系统方面存在一些问题,当时我没有在“Instantiate”方法中设置位置:
更改为:
GameObject e = (GameObject)Instantiate(ammoExplosion, transform.position, Quarternion.identity);
答案 1 :(得分:0)
也许它是粒子系统配置中的模拟空间问题。面板? 你可能应该使用" world"。
答案 2 :(得分:0)
我终于找到了答案,这是由于一个愚蠢的错误。我错误地将一个剧本附加到爆炸预制件上。当我删除脚本时,一切都很完美。谢谢你的建议。我很感激他们。