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; } } }