예제 #1
0
        /// <summary>
        /// 如果此特效是一个射线特效, 设置射线的目标点
        /// 如果特效不是射线, 则不会有任何效果
        /// </summary>
        /// <param name="targetPoint"></param>
        public void SetBeamTarget(Transform startTransform, Vector3 targetPoint)
        {
            if (m_VFXController == null)
            {
                m_OpCache_SetBeamTarget      = true;
                m_OpCache_BeamStartTransform = startTransform;
                m_OpCache_TargetPoint        = targetPoint;
            }
            else
            {
                m_OpCache_SetBeamTarget = false;

                VFXBeam beam = m_VFXController.GetComponent <VFXBeam>();
                if (beam != null)
                {
                    beam.SetBeamTarget(transform, targetPoint);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 重播缓存的操作
        /// </summary>
        private void ReplayOperationsCached()
        {
            if (m_VFXController == null)
            {
                return;
            }

            if (m_OpCache_SetBeamTarget)
            {
                VFXBeam beam = m_VFXController.GetComponent <VFXBeam>();
                if (beam != null)
                {
                    if (m_OpCache_BeamTargetTransform)
                    {
                        beam.SetBeamTarget(m_OpCache_BeamStartTransform, m_OpCache_BeamTargetTransform
                                           , m_OpCache_BeamTargetOffset, m_OpCache_UpdateHitPoint, m_OpCache_TargetColliderList);
                    }
                    else
                    {
                        beam.SetBeamTarget(m_OpCache_BeamStartTransform, m_OpCache_TargetPoint);
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// 如果此特效是一个射线特效, 设置射线的目标
        /// 如果特效不是射线, 则不会有任何效果
        /// </summary>
        /// <param name="targetTransform">目标Transform, 射线以此为结束点</param>
        /// <param name="offset">射线结束点相对于targetTransform的偏移</param>
        /// <param name="updateHitPoint">是否根据目标Collider的形状每帧更新射线弹着点</param>
        /// <param name="targetColliderList">只有需要每帧更新弹着点的时候才需要设置这个参数。 目标拥有的所有Collider</param>
        public void SetBeamTarget(Transform startTransform, Transform targetTransform, Vector3 offset, bool updateHitPoint = false, List <Collider> targetColliderList = null)
        {
            if (m_VFXController == null)
            {
                m_OpCache_SetBeamTarget       = true;
                m_OpCache_BeamStartTransform  = startTransform;
                m_OpCache_BeamTargetTransform = targetTransform;
                m_OpCache_BeamTargetOffset    = offset;
                m_OpCache_UpdateHitPoint      = updateHitPoint;
                m_OpCache_TargetColliderList  = targetColliderList;
                m_OpCache_TargetPoint         = targetTransform.position + offset;
            }
            else
            {
                m_OpCache_SetBeamTarget = false;

                VFXBeam beam = m_VFXController.GetComponent <VFXBeam>();
                if (beam != null)
                {
                    beam.SetBeamTarget(transform, targetTransform
                                       , offset, updateHitPoint, m_OpCache_TargetColliderList);
                }
            }
        }