예제 #1
0
        protected override void UF_OnPlay(GameObject tar, Vector3 tarPos, Vector3 vecforward)
        {
            if (speed <= 0.01f)
            {
                Debugger.UF_Error("Speed is too samll,play failed!");
                this.UF_Stop();
                return;
            }
            if (m_Target == null)
            {
                this.UF_Stop();
                return;
            }

            m_TimeTick  = 0;
            m_SourcePos = this.position;
            //计算出总时间
            float distance = Vector3.Distance(m_SourcePos, tar.transform.position);

            m_Duration = distance / speed;
            //设置角度指向
            this.euler = new Vector3(0, MathX.UF_EulerAngle(vecforward).y, 0);
            //偏移幅度
            m_trackOffset.x = offset.x * (Random.Range(1, 100) - 50.0f) / 50.0f;
            m_trackOffset.y = offset.y * (Random.Range(1, 50)) / 50.0f;
            m_Target        = tar;
            m_CurTargetPos  = m_Target.transform.position;
            EffectControl.UF_ResetTailRender(this.gameObject);
        }
예제 #2
0
        public void UF_OnSyncUpdate()
        {
            if (!isPlaying || isPause)
            {
                return;
            }

            //if (useFixedEuler)
            //	this.transform.eulerAngles = Vector3.zero;

            UF_UpdateFollow();

            EffectControl.UF_Run(m_Effects, GTime.DeltaTime, GTime.UnscaleDeltaTime);

            if (life <= 0)
            {
                return;
            }

            if (m_LifeTickBuf < life)
            {
                m_LifeTickBuf += GTime.DeltaTime;
            }
            else
            {
                m_LifeTickBuf = life;
                isPlaying     = false;
                if (autoRelease)
                {
                    this.Release();
                }
            }
        }
예제 #3
0
        protected override void UF_OnPlay(GameObject tar, Vector3 tarPos, Vector3 vecforward)
        {
            if (speed <= 0.01f)
            {
                Debugger.UF_Error("Speed is too samll,play failed!");
                m_IsPlaying = false;
                return;
            }
            vecforward.y = 0;
            m_Forward = vecforward.normalized;

            float len = Vector3.Distance(tarPos, this.position);

            tarPos = len * m_Forward + this.position;

            m_TarPosition = tarPos + tarOffset * m_Forward;
            if (inGround) m_TarPosition.y = 0;

            m_SorPosition = this.position;
            m_Distance = Vector3.Distance(tarPos, this.position);

            m_Duration = m_Distance / speed;
            m_DurationTick = 0;

            lastPosition = this.position;

            //设置角度指向 
            this.euler = new Vector3(0, MathX.UF_EulerAngle(this.position, tarPos).y, 0);
            EffectControl.UF_ResetTailRender(this.gameObject);
        }
예제 #4
0
 public void UF_OnSyncUpdate()
 {
     if (m_IsPlay)
     {
         EffectControl.UF_Run(m_Effects, GTime.RunDeltaTime, GTime.RunDeltaTime);
     }
 }
예제 #5
0
 public void UF_OnReset()
 {
     m_FollowTarget = null;
     isPlaying      = false;
     this.size      = 1.0f;
     sortingOrder   = 0;
     EffectControl.UF_Reset(m_Effects);
 }
예제 #6
0
 public void UF_Play()
 {
     isPlaying     = true;
     m_LifeTickBuf = 0;
     this.gameObject.SetActive(true);
     UF_SetParticlesState(1);
     EffectControl.UF_Play(m_Effects);
     EffectControl.UF_ResetTailRender(this.gameObject);
 }
예제 #7
0
        protected override void UF_OnPlay(GameObject tar, Vector3 tarPos, Vector3 vecforward)
        {
            if (speed <= 0.01f)
            {
                Debugger.UF_Error("Speed is too samll,play failed!");
                m_IsPlaying = false;
                return;
            }
            tarPos.y        = this.position.y;
            useReboundTimes = 0;
            lastPosition    = this.position;
            //设置角度指向
            this.euler = new Vector3(0, MathX.UF_EulerAngle(vecforward).y, 0);

            EffectControl.UF_ResetTailRender(this.gameObject);
        }
예제 #8
0
 public EffectBase UF_FindEffect(string effectName)
 {
     return(EffectControl.UF_FindEffect(m_Effects, effectName));
 }
예제 #9
0
 public void UF_OnAwake()
 {
     EffectControl.UF_Init(m_Effects);
 }
예제 #10
0
 public void UF_Continue()
 {
     isPause = false;
     UF_SetParticlesState(4);
     EffectControl.UF_Continue(m_Effects);
 }
예제 #11
0
 public void UF_Pause()
 {
     isPause = true;
     UF_SetParticlesState(3);
     EffectControl.UF_Pause(m_Effects);
 }
예제 #12
0
 public void UF_Stop()
 {
     isPlaying = false;
     UF_SetParticlesState(2);
     EffectControl.UF_Stop(m_Effects);
 }
예제 #13
0
 public void UF_Stop()
 {
     m_IsPlay = false;
     EffectControl.UF_Stop(m_Effects);
 }
예제 #14
0
 public void UF_Play()
 {
     m_IsPlay = true;
     EffectControl.UF_Play(m_Effects);
 }