Example #1
0
        private void DoEffect()
        {
            if (!mEffect)
            {
                return;
            }

            if (mJCS_2DCamera != null)
            {
                this.mOrigin.x = mJCS_2DCamera.GetTargetTransform().position.x;
                this.mOrigin.y = mJCS_2DCamera.GetTargetTransform().position.y;
            }

            mTime += Time.deltaTime;

            if (mEffectTime > mTime)
            {
                Vector3 newPos = mOrigin;


                float force =
                    (mAmplitude *
                     Mathf.Cos(mTime * Mathf.PI * mFrequency * 2));

                switch (mEffectAxis)
                {
                case JCS_Axis.AXIS_X:
                    newPos.x = force +
                               (mWaveRestPosition + mOrigin.x);
                    break;

                case JCS_Axis.AXIS_Y:
                    newPos.y = force +
                               (mWaveRestPosition + mOrigin.y);
                    break;

                case JCS_Axis.AXIS_Z:
                    newPos.z = force +
                               (mWaveRestPosition + mOrigin.z);
                    break;
                }


                this.transform.position = newPos;
            }
            else
            {
                this.transform.position = mOrigin;

                mEffect = false;
            }
        }
        //----------------------
        // Protected Functions

        //----------------------
        // Private Functions

        /// <summary>
        /// Do the actual shake job.
        /// </summary>
        private void DoEffect()
        {
            if (!mEffect)
            {
                return;
            }

            Vector3 pos = mShakeOrigin;

            if (mJCS_2DCamera != null)
            {
                this.mShakeOrigin.x = mJCS_2DCamera.GetTargetTransform().position.x;
                this.mShakeOrigin.y = mJCS_2DCamera.GetTargetTransform().position.y;
            }

            mShakeTimer += Time.deltaTime;

            if (mShakeTimer < mShakeTime)
            {
                // shake randomly
                // shakeTime / shakeTimer = shakeRate
                pos.x += (JCS_Random.Range(-1, 1 + 1)) * mShakeMargin * (mShakeTime / mShakeTimer) / 5;
                pos.y += (JCS_Random.Range(-1, 1 + 1)) * mShakeMargin * (mShakeTime / mShakeTimer) / 5;

                // apply pos
                this.transform.position = pos;
            }
            else
            {
                // back to original position
                this.transform.position = mShakeOrigin;

                mShakeTimer = 0;
                mEffect     = false;

                // Enable the input
                if (mStopInputWhileThisEffect)
                {
                    JCS_GameManager.instance.GAME_PAUSE = false;
                }
            }
        }