Example #1
0
    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");
    }
Example #4
0
    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);
    }
Example #5
0
    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);
    }
Example #6
0
 private static void Reset()
 {
     _data = _settings;
     CheckFadeInOrOut();
 }
 public void TriggerCameraShake(CameraShakeData shakeData)
 {
     initialPosition      = transform.localPosition;
     this.shakeData       = shakeData;
     currentShakeDuration = shakeData.ShakeDuration;
 }