123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using UnityEngine;
- using UnityEngine.Playables;
- using Utility;
- namespace CombatLibrary.CombatLibrary.CombatCore.CustomizeTime.CameraShakingAsset
- {
- public class CameraShakingBehaviour : PlayableBehaviour
- {
- public Camera Camera;
- public ShakeDirection direction;
- public int type;
- public float totalTime;
- public int count;
- public float qiangDu;
- public AnimationCurve AnimationCurve;
- private float _effectTime;
- private Vector3 _startPos;
- private bool _inEffect;
- private float cosAdd;
- private float currCosTime;
-
- public override void OnBehaviourPlay(Playable playable, FrameData info)
- {
- if (Camera == null)
- {
- return;
- }
- _startPos = Camera.transform.position;
- _effectTime = 0;
- _inEffect = true;
- cosAdd = 360F*count / totalTime;
- currCosTime = 0;
- }
- public override void ProcessFrame(Playable playable, FrameData info, object playerData)
- {
- if (Camera == null)
- {
- return;
- }
- ShakingPos(info.deltaTime);
- // Debug.Log("ProcessFrame" + Mathf.Cos(271 * Mathf.Deg2Rad));
- }
- private void ShakingPos(float time)
- {
- if (!_inEffect)
- {
- return;
- }
- _effectTime += time;
- currCosTime += time * cosAdd;
- float value = Mathf.Cos((90 + currCosTime) * Mathf.Deg2Rad);
- // Debug.Log(value);
- float _strength = AnimationCurve.Evaluate(_effectTime / totalTime);
- switch (direction)
- {
- case ShakeDirection.LeftRightUpDown:
- Camera.transform.position = _startPos + new Vector3(1,1,0)* value* _strength*qiangDu;
- break;
- case ShakeDirection.LeftRight:
- Camera.transform.position = _startPos + new Vector3(1,0,0)* value* _strength*qiangDu;
- break;
- case ShakeDirection.UpDown:
- Camera.transform.position = _startPos + new Vector3(0,1,0)* value* _strength*qiangDu;
- break;
- case ShakeDirection.FrontBack:
- Camera.transform.position = _startPos + new Vector3(0,0,1)* value* _strength*qiangDu;
- break;
- }
- if (_effectTime > totalTime)
- {
- _inEffect = false;
- Camera.transform.position = _startPos;
- }
- }
- }
- }
|