在Unity中发射子弹功能有时会发射不出去,原因是发射子弹的物体本身也有碰撞体,子弹与自身碰撞体发生碰撞就消失了。
解决方法:将墙体、敌人等需要子弹碰撞触发相应效果的物体添加Tag,在子弹脚本中添加代码判断Tag再进行Destory处理。
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Cube"))
{
//当子弹销毁时创建爆炸特效
if (effectObj !=null)
{
GameObject eft = Instantiate(effectObj, this.transform.position, this.transform.rotation);
//改音效的音量和开启状态
AudioSource audios = eft.GetComponent<AudioSource>();
audios.volume = GameDataManager.Instance.musicData.soundValue;
audios.mute = !GameDataManager.Instance.musicData.isOpenSound;
}
Destroy(this.gameObject);
}
}