Unity 5.3 C#:如何禁用一个碰撞多个游戏对象?

我正在制作一个自上而下的透视游戏,枪手会自动在预先设定的path上移动,并且射击和摧毁目标以消除障碍。 这个想法是你在发射后控制子弹的方向,它可以通过激光门,但炮手不能。 有几个目标和障碍。

我想要的:如果子弹击中本地目标,则本地目标和本地屏障被破坏。

我尝试着把每个目标和障碍作为空游戏对象的孩子,我试图摧毁空父母来解决这个问题。 请指教。

(只显示相关的代码)

using UnityEngine; using System.Collections; public class MagicBulletScript : MonoBehaviour { public Transform magicBulletTransform; void Start () { magicBulletTransform = transform; } void OnTriggerEnter (Collider other){ var progressParent = this.transform.parent.gameObject; if (other.gameObject.CompareTag("Obstacle")){ Destroy (this.gameObject); } if (other.gameObject.CompareTag("Target")){ Destroy (progressParent.gameObject); Destroy (other.gameObject); } } } 

订单确实很重要

首先破坏自身的障碍物,否则在破坏自身后永远不会执行下一行。 而一旦你摧毁了自己的父母,那么就不需要摧毁孩子(本身)。

而且在public Transform不需要保持自己的transform ,您可以通过transform在任何地方访问它。

 using UnityEngine; using System.Collections; public class MagicBulletScript : MonoBehaviour { //public Transform magicBulletTransform; void Start () { //magicBulletTransform = transform; } void OnTriggerEnter (Collider other){ var progressParent = transform.parent.gameObject; if (other.gameObject.CompareTag("Target")){ Destroy (other.gameObject); } if (other.gameObject.CompareTag("Obstacle")){ Destroy (progressParent); } } }