Example #1
0
        //到达目标(销毁子弹)
        protected virtual void ArriveTargetPoint()
        {
            Destroy(gameObject);

            //引发事件
            if (BulletArrived != null)
            {
                BulletArrivedEventArgs args = new BulletArrivedEventArgs()
                {
                    Hit = hit
                };
                BulletArrived(this, args);
            }
        }
Example #2
0
        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));
        }