Ejemplo n.º 1
0
        /// <summary>
        /// Spawn a animate object with the death event,
        /// so after the animate was played serval loop times
        /// the object will be destroyed.
        /// </summary>
        /// <param name="anim"> animation u want to play </param>
        /// <param name="orderLayer"> sorting order  </param>
        /// <param name="loopTimes"> loop times </param>
        /// <returns> object spawned. </returns>
        public static GameObject SpawnAnimateObjectDeathEvent(RuntimeAnimatorController anim, int orderLayer = 15, int loopTimes = 1)
        {
            GameObject gm = SpawnAnimateObject(anim, orderLayer);

            JCS_DestroyAnimEndEvent daee = gm.AddComponent <JCS_DestroyAnimEndEvent>();

            daee.LoopTimes = loopTimes;

            return(gm);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        private void SpawnAttackAnimation()
        {
            if (mAtkAnim == null)
            {
                JCS_Debug.LogReminders(
                    "JCS_SwingAttackAction",
                    @"No animation assign but u 
                    still want to spawn a animation...");

                return;
            }


            GameObject gm = new GameObject();

#if (UNITY_EDITOR)
            gm.name = "JCS_SwingAttackAction";
#endif
            // set the effect transform.
            if (mAsSamePosition)
            {
                gm.transform.position = this.mAtkAnimSpawnTrans.position;
            }
            if (mAsSameRotation)
            {
                gm.transform.rotation = this.mAtkAnimSpawnTrans.rotation;
            }
            if (mAsSameScale)
            {
                gm.transform.localScale = this.mAtkAnimSpawnTrans.localScale;
            }

            gm.transform.position   += mAnimOffsetPosition;
            gm.transform.localScale += mAnimOffsetScale;

            if (this.transform.localScale.x < 0)
            {
                Vector3 newScale = gm.transform.localScale;
                newScale.x = JCS_Mathf.ToNegative(newScale.x);
                gm.transform.localScale = newScale;
            }

            SpriteRenderer sr = gm.AddComponent <SpriteRenderer>();
            sr.sortingOrder = mOrderLayer;
            Animator animator = gm.AddComponent <Animator>();
            animator.runtimeAnimatorController = mAtkAnim;
            animator.speed = animator.speed * JCS_Mathf.Reciprocal(mAnimSpeed);


            JCS_DestroyAnimEndEvent dae = gm.AddComponent <JCS_DestroyAnimEndEvent>();
            dae.LoopTimes = mLoopTimes;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Add random value to the effect's transform's scale.
        /// </summary>
        /// <param name="dae"> effect transform </param>
        private void AddRandomScale(JCS_DestroyAnimEndEvent dae)
        {
            float   addScale;
            Vector3 newScale = dae.transform.localScale;

            addScale    = Random.Range(-mRandScaleRange, mRandScaleRange);
            newScale.x += addScale;

            addScale    = Random.Range(-mRandScaleRange, mRandScaleRange);
            newScale.y += addScale;

            // Not sure we have to include z direction?
            addScale    = Random.Range(-mRandScaleRange, mRandScaleRange);
            newScale.z += addScale;

            dae.transform.localScale = newScale;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Add random value to the effect's transform's rotation.
        /// </summary>
        /// <param name="dae"> effect transform </param>
        private void AddRandomRotation(JCS_DestroyAnimEndEvent dae)
        {
            float   addRot;
            Vector3 newRot = dae.transform.localEulerAngles;

            addRot    = Random.Range(-mRandRotRange, mRandRotRange);
            newRot.x += addRot;

            addRot    = Random.Range(-mRandRotRange, mRandRotRange);
            newRot.y += addRot;

            // Not sure we have to include z direction?
            addRot    = Random.Range(-mRandRotRange, mRandRotRange);
            newRot.z += addRot;

            dae.transform.localEulerAngles = newRot;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Add random value to the effect's transform's position.
        /// </summary>
        /// <param name="dae"> effect transform </param>
        private void AddRandomPosition(JCS_DestroyAnimEndEvent dae)
        {
            float   addPos;
            Vector3 newPos = dae.transform.position;

            addPos    = Random.Range(-mRandPosRange, mRandPosRange);
            newPos.x += addPos;

            addPos    = Random.Range(-mRandPosRange, mRandPosRange);
            newPos.y += addPos;

            // Not sure we have to include z direction?
            addPos    = Random.Range(-mRandPosRange, mRandPosRange);
            newPos.z += addPos;

            dae.transform.position = newPos;
        }
Ejemplo n.º 6
0
        private void OnDestroy()
        {
            // if is quitting the application don't spawn object,
            // or else will cause memory leak!
            if (JCS_ApplicationManager.APP_QUITTING)
            {
                return;
            }

            // if switching the scene, don't spawn new gameObject.
            if (JCS_SceneManager.instance.IsSwitchingScene())
            {
                return;
            }


            // trigger this effect?
            bool onTrigger = false;

            if (mActiveWhatever)
            {
                onTrigger = true;
            }
            // no need to check the rest.
            else
            {
                // if checking for hit list
                if (mActiveWithHitList)
                {
                    if (mHitList.IsHit)
                    {
                        onTrigger = true;
                    }
                }

                // if checking for destroy time.
                if (mActiveWithDestroyTime)
                {
                    if (mDestroyObjectWithTime != null)
                    {
                        if (mDestroyObjectWithTime.TimesUp)
                        {
                            onTrigger = true;
                        }
                    }
                    else
                    {
                        JCS_Debug.LogError("You can't active destroy time without `JCS_DestroyObjectWithTime` component");
                    }
                }
            }

            // do not trigger this effect.
            if (!onTrigger)
            {
                return;
            }


            GameObject gm = new GameObject();

#if (UNITY_EDITOR)
            gm.name = "JCS_3DDestroyAnimEffect";
#endif

            SpriteRenderer sr = gm.AddComponent <SpriteRenderer>();
            sr.sortingOrder = mOrderLayer;
            Animator animator = gm.AddComponent <Animator>();
            animator.runtimeAnimatorController = mDestroyAnim.GetRandomAnim();

            // add this event, so the when animation done play it will get destroy.
            JCS_DestroyAnimEndEvent dae = gm.AddComponent <JCS_DestroyAnimEndEvent>();
            dae.LoopTimes = LoopTimes;

            if (mSamePosition)
            {
                dae.transform.position = this.transform.position;
            }
            if (mSameRotation)
            {
                dae.transform.rotation = this.transform.rotation;
            }
            if (mSameScale)
            {
                dae.transform.localScale = this.transform.localScale;
            }

            // Random Effect
            if (mRandPos)
            {
                AddRandomPosition(dae);
            }
            if (mRandRot)
            {
                AddRandomRotation(dae);
            }
            if (mRandScale)
            {
                AddRandomScale(dae);
            }
        }