public void DoShake1(GameObject target, int curveIndex) { LoadCurves(); if (m_Curves.ContainsKey(curveIndex)) { CameraShakeData data = m_Curves[curveIndex]; CameraShake.ShakeType shakeType = CameraShake.ShakeType.LocalPosition; if (data.m_ShakeType == "CameraMatrix") { shakeType = CameraShake.ShakeType.CameraMatrix; } bool isScale = true; if (data.m_MultiplyByTimeScale == 0) { isScale = false; } CameraShake comp = target.AddUniqueCompoment <CameraShake>(); comp.shakeType = shakeType; comp.numberOfShakes = data.m_NumOfShakes; comp.shakeAmount = data.m_ShakeAmount; comp.rotationAmount = data.m_RotationAmount; comp.distance = data.m_Distance; comp.speed = data.m_Speed; comp.decay = data.m_Decay; comp.guiShakeModifier = data.m_GuiShakeModifier; comp.multiplyByTimeScale = isScale; comp.Shake(); } }
void Update() { if (currentShakeDuration > 0) { transform.localPosition = initialPosition + Random.insideUnitSphere * shakeData.ShakeMagnitude; currentShakeDuration -= Time.deltaTime * shakeData.DampingSpeed; } else { currentShakeDuration = 0f; transform.localPosition = initialPosition; shakeData = null; } }
public void Shake(ShakeMode mode, Vector2 dir, SmoothFunc smoothFunc = null, float trauma = 1f) { int seed = Random.Range(-100, 100); CameraShakeData data = new CameraShakeData { trauma = trauma, force = shakeForces[(int)mode], speed = shakeSpeeds[(int)mode], seed = seed, dir = dir, smoothFunc = smoothFunc ?? MathUtils.SmoothStart2 }; shakeData[shakeDataCount++] = data; Debug.Assert(shakeDataCount <= shakeData.Length, "Shake data is full"); }
public static bool CreateShakeSetup(CameraShakeSO Setting, GameObject Object) { if (_shakerCamera != null) { return(false); } //setup for shake by zering out vectors _shakerCamera = Object; _shakeAmount = Vector3.zero; _data = Setting.CameraShakeSettings; _settings = _data; CheckFadeInOrOut(); _influencePosition = _defaultPosInfluence; _influenceRotation = _deaultRotInfluence; _tickAmount = Random.Range(-100, 100); return(true); }
public List <CameraShakeData> ReadCameraShakeData() { List <CameraShakeData> list = new List <CameraShakeData>(); TextAsset textAsset = (TextAsset)Resources.Load("AnimationCurveInfo"); string text = textAsset.text; string[] lines = text.Split('\n'); char[] trimStart = { ' ', '\t' }; char[] trimEnd = { ' ', '\r', '\n', '\t' }; CameraShakeData data = null; foreach (string item in lines) { string strLine = item.TrimStart(trimStart); strLine = item.TrimEnd(trimEnd); if (strLine == string.Empty) { continue; } if (strLine.StartsWith("index")) { data = new CameraShakeData(); } if (strLine.StartsWith("index")) { data.m_Index = int.Parse(strLine.Split(':')[1]); } else if (strLine.StartsWith("name")) { data.m_Name = strLine.Split(':')[1]; } else if (strLine.StartsWith("cameraTags")) { List <string> tags = new List <string>(); string[] strs = (strLine.Split(':')[1]).Split('|'); for (int i = 0; i < strs.Length; ++i) { tags.Add(strs[i]); } data.m_CameraTags = tags; } else if (strLine.StartsWith("shakeType")) { data.m_ShakeType = strLine.Split(':')[1]; } else if (strLine.StartsWith("numOfShakes")) { data.m_NumOfShakes = int.Parse(strLine.Split(':')[1]); } else if (strLine.StartsWith("shakeAmount")) { string[] strs = (strLine.Split(':')[1]).Split('|'); data.m_ShakeAmount = new Vector3(float.Parse(strs[0]), float.Parse(strs[1]), float.Parse(strs[2])); } else if (strLine.StartsWith("rotationAmount")) { string[] strs = (strLine.Split(':')[1]).Split('|'); data.m_RotationAmount = new Vector3(float.Parse(strs[0]), float.Parse(strs[1]), float.Parse(strs[2])); } else if (strLine.StartsWith("distance")) { data.m_Distance = float.Parse(strLine.Split(':')[1]); } else if (strLine.StartsWith("speed")) { data.m_Speed = float.Parse(strLine.Split(':')[1]); } else if (strLine.StartsWith("decay")) { data.m_Decay = float.Parse(strLine.Split(':')[1]); } else if (strLine.StartsWith("guiShakeModifier")) { data.m_GuiShakeModifier = float.Parse(strLine.Split(':')[1]); } else if (strLine.StartsWith("timeScale")) { data.m_MultiplyByTimeScale = int.Parse(strLine.Split(':')[1]); list.Add(data); } } return(list); }
private static void Reset() { _data = _settings; CheckFadeInOrOut(); }
public void TriggerCameraShake(CameraShakeData shakeData) { initialPosition = transform.localPosition; this.shakeData = shakeData; currentShakeDuration = shakeData.ShakeDuration; }