From cc2150a88efc62a079d74f4d4a9fd5316168bf4b Mon Sep 17 00:00:00 2001 From: Cat Flynn Date: Sat, 9 Jan 2021 18:18:55 +0000 Subject: [PATCH] add camera shake --- Assets/CameraShake.cs | 33 +++++++++++++ Assets/CameraShake.cs.meta | 11 +++++ Assets/Data.meta | 8 ++++ Assets/Data/Camera Shake Duration.asset | 16 +++++++ Assets/Data/Camera Shake Duration.asset.meta | 8 ++++ Assets/Data/Camera Shake Intensity.asset | 16 +++++++ Assets/Data/Camera Shake Intensity.asset.meta | 8 ++++ Assets/Materials/Ship.mat | 2 +- Assets/Prefabs/Rendering.prefab | 39 ++++++++++++++++ Assets/Scenes/Chief's Sandbox.unity | 46 ++++++++++++++++++- Assets/Scripts/AudioBeatManager.cs | 2 + Assets/Scripts/LoseLife.cs | 5 ++ Assets/Shaders/tunnel.shader | 8 ++-- 13 files changed, 196 insertions(+), 6 deletions(-) create mode 100644 Assets/CameraShake.cs create mode 100644 Assets/CameraShake.cs.meta create mode 100644 Assets/Data.meta create mode 100644 Assets/Data/Camera Shake Duration.asset create mode 100644 Assets/Data/Camera Shake Duration.asset.meta create mode 100644 Assets/Data/Camera Shake Intensity.asset create mode 100644 Assets/Data/Camera Shake Intensity.asset.meta diff --git a/Assets/CameraShake.cs b/Assets/CameraShake.cs new file mode 100644 index 0000000..416fc4f --- /dev/null +++ b/Assets/CameraShake.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Ktyl.Util; +using UnityEngine; + +public class CameraShake : MonoBehaviour +{ + [SerializeField] private SerialFloat _intensity; + [SerializeField] private SerialFloat _duration; + [SerializeField] private AnimationCurve _anim; + + private float _start = -1; + + private void Awake() + { + Shader.SetGlobalFloat("_CameraShake", 0); + } + + void LateUpdate() + { + var elapsed = Time.time - _start; + if (elapsed > _duration) return; + + var normalisedElapsed = elapsed / _duration; + Shader.SetGlobalFloat("_CameraShake", _anim.Evaluate(normalisedElapsed) * _intensity); + } + + public void Shake() + { + _start = Time.time; + } +} diff --git a/Assets/CameraShake.cs.meta b/Assets/CameraShake.cs.meta new file mode 100644 index 0000000..988c896 --- /dev/null +++ b/Assets/CameraShake.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3147f962613cca54f8a0b78929a2854b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data.meta b/Assets/Data.meta new file mode 100644 index 0000000..16095af --- /dev/null +++ b/Assets/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3463a456983d7f843832019b8cf97a5c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Camera Shake Duration.asset b/Assets/Data/Camera Shake Duration.asset new file mode 100644 index 0000000..ae99f48 --- /dev/null +++ b/Assets/Data/Camera Shake Duration.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d86361ffc5ae478d9e976629c5d651bd, type: 3} + m_Name: Camera Shake Duration + m_EditorClassIdentifier: + _initialValue: 0.5 + _readOnly: 1 diff --git a/Assets/Data/Camera Shake Duration.asset.meta b/Assets/Data/Camera Shake Duration.asset.meta new file mode 100644 index 0000000..53dd8ce --- /dev/null +++ b/Assets/Data/Camera Shake Duration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 650f42715fd5234439ee753fd4bcb106 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Camera Shake Intensity.asset b/Assets/Data/Camera Shake Intensity.asset new file mode 100644 index 0000000..f612abc --- /dev/null +++ b/Assets/Data/Camera Shake Intensity.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d86361ffc5ae478d9e976629c5d651bd, type: 3} + m_Name: Camera Shake Intensity + m_EditorClassIdentifier: + _initialValue: 0.2 + _readOnly: 1 diff --git a/Assets/Data/Camera Shake Intensity.asset.meta b/Assets/Data/Camera Shake Intensity.asset.meta new file mode 100644 index 0000000..0cfd2be --- /dev/null +++ b/Assets/Data/Camera Shake Intensity.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a9fdc2c236f2e264a8e573af06ca295d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Ship.mat b/Assets/Materials/Ship.mat index e99e9ae..5e34867 100644 --- a/Assets/Materials/Ship.mat +++ b/Assets/Materials/Ship.mat @@ -115,7 +115,7 @@ Material: - _Color1: {r: 0.5411765, g: 1.8509804, b: 2, a: 1} - _Color2: {r: 1.2078432, g: 0, b: 1.1058824, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _FlashColor: {r: 1.1, g: 1.1, b: 1.1, a: 1} + - _FlashColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] --- !u!114 &1642389398374086642 diff --git a/Assets/Prefabs/Rendering.prefab b/Assets/Prefabs/Rendering.prefab index 71cc282..0814ffd 100644 --- a/Assets/Prefabs/Rendering.prefab +++ b/Assets/Prefabs/Rendering.prefab @@ -549,6 +549,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 3397488661916228001} + - component: {fileID: 5076175860835241000} m_Layer: 0 m_Name: Tunnel m_TagString: Untagged @@ -572,6 +573,44 @@ Transform: m_Father: {fileID: 3397488660859550701} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5076175860835241000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3397488661916228000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3147f962613cca54f8a0b78929a2854b, type: 3} + m_Name: + m_EditorClassIdentifier: + _intensity: {fileID: 11400000, guid: a9fdc2c236f2e264a8e573af06ca295d, type: 2} + _duration: {fileID: 11400000, guid: 650f42715fd5234439ee753fd4bcb106, type: 2} + _anim: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!1 &3859152818583472155 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Chief's Sandbox.unity b/Assets/Scenes/Chief's Sandbox.unity index 6231cd5..e705f98 100644 --- a/Assets/Scenes/Chief's Sandbox.unity +++ b/Assets/Scenes/Chief's Sandbox.unity @@ -277,6 +277,49 @@ MonoBehaviour: pauseOnBeat: 16 pauseLengthInBeats: 0 beatOffset: 2 +--- !u!1 &531937973 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3397488661916228000, guid: 1f82f952c53fc7449a0091cf29ba3def, type: 3} + m_PrefabInstance: {fileID: 1077224733} + m_PrefabAsset: {fileID: 0} +--- !u!114 &531937974 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 531937973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3147f962613cca54f8a0b78929a2854b, type: 3} + m_Name: + m_EditorClassIdentifier: + _intensity: {fileID: 11400000, guid: a9fdc2c236f2e264a8e573af06ca295d, type: 2} + _duration: {fileID: 11400000, guid: 650f42715fd5234439ee753fd4bcb106, type: 2} + _anim: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: -2 + outSlope: -2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!1 &728836291 GameObject: m_ObjectHideFlags: 0 @@ -499,7 +542,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3397488660842926093, guid: 1f82f952c53fc7449a0091cf29ba3def, type: 3} propertyPath: m_LocalScale.x - value: 2309.1313 + value: 2303.7488 objectReference: {fileID: 0} - target: {fileID: 3397488660842926093, guid: 1f82f952c53fc7449a0091cf29ba3def, type: 3} propertyPath: m_LocalScale.y @@ -763,6 +806,7 @@ MonoBehaviour: - {fileID: 1611642542} - {fileID: 728836294} polygon: {fileID: 1639649353} + _cameraShake: {fileID: 0} --- !u!1 &1215971662 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/AudioBeatManager.cs b/Assets/Scripts/AudioBeatManager.cs index 7f2a81b..89dc08f 100644 --- a/Assets/Scripts/AudioBeatManager.cs +++ b/Assets/Scripts/AudioBeatManager.cs @@ -43,6 +43,8 @@ public class AudioBeatManager : MonoBehaviour, IAudioBeatManager private void Awake() { + DOTween.Init(); + _secPerBeat = 60f / bpm; RuntimeManager.CoreSystem.getMasterChannelGroup(out _channelGroup); RuntimeManager.CoreSystem.getSoftwareFormat(out _sampleRate, out _, out _); diff --git a/Assets/Scripts/LoseLife.cs b/Assets/Scripts/LoseLife.cs index 5edd3c1..aec2f8f 100644 --- a/Assets/Scripts/LoseLife.cs +++ b/Assets/Scripts/LoseLife.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using DG.Tweening; +using Ktyl.Util; using UnityEngine; using Weapons.Scripts; @@ -9,6 +10,8 @@ public class LoseLife : MonoBehaviour { [SerializeField] private Renderer[] healthMarkers; [SerializeField] private Renderer polygon; + + [SerializeField] private CameraShake _cameraShake; private EntityHealth _health; @@ -32,6 +35,8 @@ public class LoseLife : MonoBehaviour sequence.Append(polygon.material.DOFloat(0,"_FlashAmount", 0.2f).SetUpdate(true)); } + _cameraShake.Shake(); + sequence.Play().OnComplete(() => { _health.enabled = true; diff --git a/Assets/Shaders/tunnel.shader b/Assets/Shaders/tunnel.shader index d198f33..9653207 100644 --- a/Assets/Shaders/tunnel.shader +++ b/Assets/Shaders/tunnel.shader @@ -27,7 +27,7 @@ Shader "custom/tunnel" _StarMap("Star Map", 2D) = "black" _FractalMap("Fractal Map", 2D) = "black" - _ShakeStrength("Shake Strength", Float) = 0.01 +// _ShakeStrength("Shake Strength", Float) = 0.01 _Intensity("Intensity", Float) = 1.0 } @@ -79,7 +79,7 @@ Shader "custom/tunnel" float _StarsWeight; float _Intensity; - float _ShakeStrength; + float _CameraShake = 0.0; TEXTURE2D(_NebulaMap); SAMPLER(sampler_NebulaMap); @@ -202,8 +202,8 @@ Shader "custom/tunnel" float shake = _Time*50; cameraShake.x = cos(shake*12.3341)+sin(shake*19.231057); cameraShake.y = cos(shake*17.12311)+sin(shake*14.2315165); - cameraShake*=_ShakeStrength; - // p += cameraShake; + cameraShake*=_CameraShake; + p += cameraShake; // shared tunnel vars float r = length(p);