From c3914da4ac9bd0d377fae7c6647f099a6dc4e902 Mon Sep 17 00:00:00 2001 From: SoulliesOfficial Date: Wed, 17 Dec 2025 04:52:56 -0500 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4FEEL=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Feedbacks/MMF_CinemachineRotation.cs | 10 +- .../Shakers/MMCinemachineRotationShaker.cs | 8 +- Assets/Scenes/SampleScene.unity | 328 +++++------------- .../PostProcessing/SpeedLines.cs | 2 +- 4 files changed, 104 insertions(+), 244 deletions(-) diff --git a/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Feedbacks/MMF_CinemachineRotation.cs b/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Feedbacks/MMF_CinemachineRotation.cs index 3bbf9178f..dece07992 100644 --- a/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Feedbacks/MMF_CinemachineRotation.cs +++ b/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Feedbacks/MMF_CinemachineRotation.cs @@ -12,9 +12,9 @@ namespace MoreMountains.Feedbacks /// 需要在 Virtual Camera 上挂载 MMCinemachineRotationShaker。 /// [AddComponentMenu("")] - [FeedbackPath("Camera/Camera Rotation Shake")] + [FeedbackPath("Camera/Cinemachine Rotation Shake")] [FeedbackHelp("控制 Cinemachine 相机的旋转抖动。X/Y 轴作用于 Shaker 指定的 FollowTarget,Z 轴作用于相机的 Dutch。需要在 Virtual Camera 上挂载 MMCinemachineRotationShaker。")] - public class MMF_CameraRotation : MMF_Feedback + public class MMF_CinemachineRotation : MMF_Feedback { /// 用于禁用此类 Feedback 的静态开关 public static bool FeedbackTypeAuthorized = true; @@ -71,7 +71,7 @@ namespace MoreMountains.Feedbacks intensityMultiplier *= AttenuationCurve.Evaluate(normalizedDistance); } - MMCameraRotationShakeEvent.Trigger( + MMCinemachineRotationShakeEvent.Trigger( ShakeCurve, FeedbackDuration, RotationAmplitude, @@ -89,13 +89,13 @@ namespace MoreMountains.Feedbacks { if (!Active || !FeedbackTypeAuthorized) return; base.CustomStopFeedback(position, feedbacksIntensity); - MMCameraRotationShakeEvent.Trigger(ShakeCurve, FeedbackDuration, RotationAmplitude, 0f, 1f, false, stop: true); + MMCinemachineRotationShakeEvent.Trigger(ShakeCurve, FeedbackDuration, RotationAmplitude, 0f, 1f, false, stop: true); } protected override void CustomRestoreInitialValues() { if (!Active || !FeedbackTypeAuthorized) return; - MMCameraRotationShakeEvent.Trigger(ShakeCurve, FeedbackDuration, RotationAmplitude, 0f, 1f, false, restore: true); + MMCinemachineRotationShakeEvent.Trigger(ShakeCurve, FeedbackDuration, RotationAmplitude, 0f, 1f, false, restore: true); } public override void OnDrawGizmosSelectedHandler() diff --git a/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Shakers/MMCinemachineRotationShaker.cs b/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Shakers/MMCinemachineRotationShaker.cs index f08163c00..a003c9226 100644 --- a/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Shakers/MMCinemachineRotationShaker.cs +++ b/Assets/OtherPlugins/Feel/MMFeedbacks/MMFeedbacksForThirdParty/Cinemachine/Shakers/MMCinemachineRotationShaker.cs @@ -10,7 +10,7 @@ using Unity.Cinemachine; namespace MoreMountains.FeedbacksForThirdParty { // 定义事件结构 - public struct MMCameraRotationShakeEvent + public struct MMCinemachineRotationShakeEvent { static private event Delegate OnEvent; [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] private static void RuntimeInitialization() { OnEvent = null; } @@ -138,7 +138,7 @@ namespace MoreMountains.FeedbacksForThirdParty ShakeCurve = _originalShakeCurve; } - public virtual void OnMMCameraRotationShakeEvent(AnimationCurve shakeCurve, float duration, Vector3 rotationAmplitude, float remapMin, float remapMax, bool relative, float feedbacksIntensity = 1.0f, MMChannelData channelData = null, bool resetShakerValuesAfterShake = true, bool resetTargetValuesAfterShake = true, bool forwardDirection = true, TimescaleModes timescaleMode = TimescaleModes.Scaled, bool stop = false, bool restore = false) + public virtual void OnMMCinemachineRotationShakeEvent(AnimationCurve shakeCurve, float duration, Vector3 rotationAmplitude, float remapMin, float remapMax, bool relative, float feedbacksIntensity = 1.0f, MMChannelData channelData = null, bool resetShakerValuesAfterShake = true, bool resetTargetValuesAfterShake = true, bool forwardDirection = true, TimescaleModes timescaleMode = TimescaleModes.Scaled, bool stop = false, bool restore = false) { if (!CheckEventAllowed(channelData)) return; @@ -179,13 +179,13 @@ namespace MoreMountains.FeedbacksForThirdParty public override void StartListening() { base.StartListening(); - MMCameraRotationShakeEvent.Register(OnMMCameraRotationShakeEvent); + MMCinemachineRotationShakeEvent.Register(OnMMCinemachineRotationShakeEvent); } public override void StopListening() { base.StopListening(); - MMCameraRotationShakeEvent.Unregister(OnMMCameraRotationShakeEvent); + MMCinemachineRotationShakeEvent.Unregister(OnMMCinemachineRotationShakeEvent); } } } \ No newline at end of file diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index ee5116602..0dfec1e9f 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -16068,7 +16068,6 @@ MonoBehaviour: - {fileID: 1863583934} - {fileID: 84412559} - {fileID: 511410322} - - {fileID: 2089621863} SerializedBytesString: Prefab: {fileID: 0} PrefabModificationsReferencedUnityObjects: [] @@ -16194,8 +16193,8 @@ MonoBehaviour: Entry: 7 Data: 6|SLSFramework.FeelAssistance.FeedbackUnit, Assembly-CSharp - Name: feedback - Entry: 10 - Data: 4 + Entry: 6 + Data: - Name: action Entry: 6 Data: @@ -20475,7 +20474,7 @@ MeshCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 5 - m_Convex: 0 + m_Convex: 1 m_CookingOptions: 30 m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1328013964 stripped @@ -28552,7 +28551,6 @@ MonoBehaviour: InScriptDrivenPause: 0 FeedbacksList: - rid: 5266334308210049401 - - rid: 5266334821235818644 KeepPlayModeChanges: 0 PerformanceMode: 0 RestoreInitialValuesOnDisable: 0 @@ -28705,144 +28703,6 @@ MonoBehaviour: Velocity: {x: 0, y: 0, z: 0} ClearImpulseOnStop: 0 DrawGizmos: 0 - - rid: 5266334821235818644 - type: {class: MMF_CameraRotation, ns: MoreMountains.Feedbacks, asm: MoreMountains.Tools} - data: - Active: 0 - UniqueID: 1267823441 - Label: Camera Rotation Shake - OriginalLabel: Camera Rotation Shake - ChannelMode: 0 - Channel: 0 - MMChannelDefinition: {fileID: 0} - Chance: 100 - Timing: - TimescaleMode: 0 - ExcludeFromHoldingPauses: 0 - ContributeToTotalDuration: 1 - InitialDelay: 0 - CooldownDuration: 0 - InterruptsOnStop: 1 - NumberOfRepeats: 0 - RepeatForever: 0 - DelayBetweenRepeats: 1 - PlayCount: 0 - LimitPlayCount: 0 - MaxPlayCount: 3 - SetPlayCountToZeroOnReset: 0 - MMFeedbacksDirectionCondition: 0 - PlayDirection: 0 - ConstantIntensity: 0 - UseIntensityInterval: 0 - IntensityIntervalMin: 0 - IntensityIntervalMax: 0 - Sequence: {fileID: 0} - TrackID: 0 - Quantized: 0 - TargetBPM: 120 - AutomatedTargetAcquisition: - Mode: 0 - ChildIndex: 0 - RandomizeOutput: 0 - RandomMultiplier: {x: 0.8, y: 1} - RandomizeDuration: 0 - RandomDurationMultiplier: {x: 0.5, y: 2} - UseRange: 0 - RangeDistance: 5 - UseRangeFalloff: 0 - RangeFalloff: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - 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 - RemapRangeFalloff: {x: 0, y: 1} - AutomaticShakerSetupButton: - ButtonText: Automatic Shaker Setup - Owner: {fileID: 1863583934} - DebugActive: 0 - Duration: 0.3 - RotationAmplitude: {x: 0, y: 10, z: 5} - ShakeCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 0.2 - value: 1 - inSlope: 0 - outSlope: 0 - 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 - UseAttenuation: 0 - AttenuationRange: 50 - AttenuationCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - 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 - ResetShakerValuesAfterShake: 1 - ResetTargetValuesAfterShake: 1 - DrawGizmos: 1 --- !u!1 &1864005839 stripped GameObject: m_CorrespondingSourceObject: {fileID: 5712394601613459224, guid: d22a44843d244fc4fb4459be68ead0bb, type: 3} @@ -33930,7 +33790,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2089621861} - m_Enabled: 0 + m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6da43522623d4704e979466dc7650b65, type: 3} m_Name: @@ -34026,22 +33886,98 @@ MonoBehaviour: DebugActive: 0 InScriptDrivenPause: 0 FeedbacksList: - - rid: 5266334308210049411 - - rid: 563130611402277196 - - rid: 563130666638376960 + - rid: 563130666638377074 + - rid: 563130666638377075 + - rid: 563130666638377076 KeepPlayModeChanges: 0 PerformanceMode: 0 RestoreInitialValuesOnDisable: 0 StopFeedbacksOnDisable: 0 - PlayCount: 59 + PlayCount: 0 references: version: 2 RefIds: - - rid: 563130611402277196 + - rid: 563130666638377074 + type: {class: MMF_FreezeFrame, ns: MoreMountains.Feedbacks, asm: MoreMountains.Tools} + data: + Active: 0 + UniqueID: -1269842796 + Label: Freeze Frame + OriginalLabel: Freeze Frame + ChannelMode: 0 + Channel: 0 + MMChannelDefinition: {fileID: 0} + Chance: 100 + Timing: + TimescaleMode: 0 + ExcludeFromHoldingPauses: 0 + ContributeToTotalDuration: 1 + InitialDelay: 0 + CooldownDuration: 0 + InterruptsOnStop: 1 + NumberOfRepeats: 0 + RepeatForever: 0 + DelayBetweenRepeats: 1 + PlayCount: 59 + LimitPlayCount: 0 + MaxPlayCount: 3 + SetPlayCountToZeroOnReset: 0 + MMFeedbacksDirectionCondition: 0 + PlayDirection: 0 + ConstantIntensity: 0 + UseIntensityInterval: 0 + IntensityIntervalMin: 0 + IntensityIntervalMax: 0 + Sequence: {fileID: 0} + TrackID: 0 + Quantized: 0 + TargetBPM: 120 + AutomatedTargetAcquisition: + Mode: 0 + ChildIndex: 0 + RandomizeOutput: 0 + RandomMultiplier: {x: 0.8, y: 1} + RandomizeDuration: 0 + RandomDurationMultiplier: {x: 0.5, y: 2} + UseRange: 0 + RangeDistance: 5 + UseRangeFalloff: 0 + RangeFalloff: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + 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 + RemapRangeFalloff: {x: 0, y: 1} + AutomaticShakerSetupButton: + ButtonText: Automatic Shaker Setup + Owner: {fileID: 2089621863} + DebugActive: 0 + FreezeFrameDuration: 0.06 + MinimumTimescaleThreshold: 0.1 + - rid: 563130666638377075 type: {class: MMF_CinemachineImpulse, ns: MoreMountains.FeedbacksForThirdParty, asm: MoreMountains.Tools} data: Active: 1 - UniqueID: 2061972629 + UniqueID: -1491924810 Label: Cinemachine Impulse OriginalLabel: Cinemachine Impulse ChannelMode: 0 @@ -34178,16 +34114,16 @@ MonoBehaviour: DissipationMode: 2 DissipationDistance: 100 PropagationSpeed: 343 - Velocity: {x: 0, y: 0.2, z: 0} + Velocity: {x: 5, y: 5, z: 5} ClearImpulseOnStop: 0 DrawGizmos: 0 - - rid: 563130666638376960 - type: {class: MMF_CameraRotation, ns: MoreMountains.Feedbacks, asm: MoreMountains.Tools} + - rid: 563130666638377076 + type: {class: MMF_CinemachineRotation, ns: MoreMountains.Feedbacks, asm: MoreMountains.Tools} data: Active: 1 - UniqueID: -1751621655 - Label: Camera Rotation Shake - OriginalLabel: Camera Rotation Shake + UniqueID: -1149022277 + Label: Cinemachine Rotation Shake + OriginalLabel: Cinemachine Rotation Shake ChannelMode: 0 Channel: 0 MMChannelDefinition: {fileID: 0} @@ -34255,8 +34191,8 @@ MonoBehaviour: ButtonText: Automatic Shaker Setup Owner: {fileID: 2089621863} DebugActive: 0 - Duration: 0.6 - RotationAmplitude: {x: -2, y: 0, z: -5} + Duration: 0.4 + RotationAmplitude: {x: 2, y: 0, z: -5} ShakeCurve: serializedVersion: 2 m_Curve: @@ -34319,82 +34255,6 @@ MonoBehaviour: ResetShakerValuesAfterShake: 1 ResetTargetValuesAfterShake: 1 DrawGizmos: 1 - - rid: 5266334308210049411 - type: {class: MMF_FreezeFrame, ns: MoreMountains.Feedbacks, asm: MoreMountains.Tools} - data: - Active: 0 - UniqueID: 338322809 - Label: Freeze Frame - OriginalLabel: Freeze Frame - ChannelMode: 0 - Channel: 0 - MMChannelDefinition: {fileID: 0} - Chance: 100 - Timing: - TimescaleMode: 0 - ExcludeFromHoldingPauses: 0 - ContributeToTotalDuration: 1 - InitialDelay: 0 - CooldownDuration: 0 - InterruptsOnStop: 1 - NumberOfRepeats: 0 - RepeatForever: 0 - DelayBetweenRepeats: 1 - PlayCount: 59 - LimitPlayCount: 0 - MaxPlayCount: 3 - SetPlayCountToZeroOnReset: 0 - MMFeedbacksDirectionCondition: 0 - PlayDirection: 0 - ConstantIntensity: 0 - UseIntensityInterval: 0 - IntensityIntervalMin: 0 - IntensityIntervalMax: 0 - Sequence: {fileID: 0} - TrackID: 0 - Quantized: 0 - TargetBPM: 120 - AutomatedTargetAcquisition: - Mode: 0 - ChildIndex: 0 - RandomizeOutput: 0 - RandomMultiplier: {x: 0.8, y: 1} - RandomizeDuration: 0 - RandomDurationMultiplier: {x: 0.5, y: 2} - UseRange: 0 - RangeDistance: 5 - UseRangeFalloff: 0 - RangeFalloff: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - 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 - RemapRangeFalloff: {x: 0, y: 1} - AutomaticShakerSetupButton: - ButtonText: Automatic Shaker Setup - Owner: {fileID: 2089621863} - DebugActive: 0 - FreezeFrameDuration: 0.06 - MinimumTimescaleThreshold: 0.1 --- !u!4 &2089966422 stripped Transform: m_CorrespondingSourceObject: {fileID: 5775646025416913786, guid: bb895333a2c297046982a7e19d1b2f95, type: 3} diff --git a/Assets/Shaders/ScriptablePostProcessor/PostProcessing/SpeedLines.cs b/Assets/Shaders/ScriptablePostProcessor/PostProcessing/SpeedLines.cs index 829ce0af5..db5526958 100644 --- a/Assets/Shaders/ScriptablePostProcessor/PostProcessing/SpeedLines.cs +++ b/Assets/Shaders/ScriptablePostProcessor/PostProcessing/SpeedLines.cs @@ -9,7 +9,7 @@ namespace SLSFramework.Rendering.PostProcessing public class SpeedLines : ScriptablePostProcessorVolume { public override CustomPostProcessInjectionPoint InjectionPoint => CustomPostProcessInjectionPoint.AfterPostProcess; - public override int OrderInInjectionPoint => 20; // 调整执行顺序 + public override int OrderInInjectionPoint => 20; [Header("Effect Color & Intensity")] public ColorParameter color = new(new Color(1f, 1f, 1f, 0.5f), true, true, true);