//到达目标(销毁子弹) protected virtual void ArriveTargetPoint() { Destroy(gameObject); //引发事件 if (BulletArrived != null) { BulletArrivedEventArgs args = new BulletArrivedEventArgs() { Hit = hit }; BulletArrived(this, args); } }
private void GenerateEffect(object sender, BulletArrivedEventArgs e) { //不同物体 不同特效 //switch (e.Hit.collider.tag) //{ //} if (e.Hit.collider == null) { return; } //特效命名规则:Effects + 物体标签 string prefabName = "Effects" + e.Hit.collider.tag; var effectPrefab = ResourceManager.Load <GameObject>(prefabName); if (effectPrefab == null) { return; } //备注:考虑接触特效可能是片,所以需要沿法线方向移动,Z轴朝向法线方向。 Instantiate(effectPrefab, e.Hit.point + e.Hit.normal * 0.001f, Quaternion.FromToRotation(Vector3.forward, e.Hit.normal)); }