+玩家行为事件

+视角摇晃
+相机后处理
This commit is contained in:
2024-09-14 15:53:56 +08:00
parent 8bea97f5ae
commit 2be87291b7
20 changed files with 519 additions and 13 deletions

View File

@@ -123,6 +123,212 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &37094156
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 37094158}
- component: {fileID: 37094157}
- component: {fileID: 37094159}
- component: {fileID: 37094161}
- component: {fileID: 37094160}
- component: {fileID: 37094162}
- component: {fileID: 37094163}
m_Layer: 0
m_Name: Post-Processing
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!20 &37094157
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.46422216, g: 0.51849216, b: 0.6037736, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 8400000, guid: 40d6d138feabb2440b709406c89491ac, type: 2}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &37094158
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 944706249}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &37094159
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 73886bd5d98b4e13af3b19513287a041, type: 3}
m_Name:
m_EditorClassIdentifier:
mouseSensitivity: 100
playerBody: {fileID: 944706249}
--- !u!114 &37094160
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b9a305e18de0c04dbd257a21cd47087, type: 3}
m_Name:
m_EditorClassIdentifier:
sharedProfile: {fileID: 11400000, guid: 6e8d6d105a8a2194c8c10888712f88ae, type: 2}
isGlobal: 1
blendDistance: 0
weight: 1
priority: 0
--- !u!114 &37094161
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3}
m_Name:
m_EditorClassIdentifier:
volumeTrigger: {fileID: 37094158}
volumeLayer:
serializedVersion: 2
m_Bits: 97
stopNaNPropagation: 1
finalBlitToCameraTarget: 0
antialiasingMode: 0
temporalAntialiasing:
jitterSpread: 0.75
sharpness: 0.25
stationaryBlending: 0.95
motionBlending: 0.85
subpixelMorphologicalAntialiasing:
quality: 2
fastApproximateAntialiasing:
fastMode: 0
keepAlpha: 0
fog:
enabled: 1
excludeSkybox: 1
debugLayer:
lightMeter:
width: 512
height: 256
showCurves: 1
histogram:
width: 512
height: 256
channel: 3
waveform:
exposure: 0.12
height: 256
vectorscope:
size: 256
exposure: 0.12
overlaySettings:
linearDepth: 0
motionColorIntensity: 4
motionGridSize: 64
colorBlindnessType: 0
colorBlindnessStrength: 1
m_Resources: {fileID: 11400000, guid: d82512f9c8e5d4a4d938b575d47f88d4, type: 2}
m_ShowToolkit: 0
m_ShowCustomSorter: 0
breakBeforeColorGrading: 0
m_BeforeTransparentBundles: []
m_BeforeStackBundles: []
m_AfterStackBundles: []
--- !u!114 &37094162
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dd8e51b43a0c4d4ca7e732246b8ad2e6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &37094163
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37094156}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d64f284209414d79a3996a0a6d1748b4, type: 3}
m_Name:
m_EditorClassIdentifier:
cameraTransform: {fileID: 37094158}
amplitude: 0.1
frequency: 20
--- !u!1 &127902481
GameObject:
m_ObjectHideFlags: 0
@@ -137,7 +343,7 @@ GameObject:
- component: {fileID: 127902482}
- component: {fileID: 127902486}
m_Layer: 0
m_Name: Sphere
m_Name: SphereCant
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -184,7 +390,7 @@ MeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 2100000, guid: 850d5eab8c52afd4185452ca282c530b, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -271,7 +477,7 @@ GameObject:
- component: {fileID: 183733061}
- component: {fileID: 183733062}
m_Layer: 0
m_Name: Cube
m_Name: CubeCanBeAct
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -318,7 +524,7 @@ MeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 2100000, guid: 850d5eab8c52afd4185452ca282c530b, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -402,6 +608,78 @@ Rigidbody:
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!1 &675862481
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 675862482}
- component: {fileID: 675862484}
- component: {fileID: 675862483}
m_Layer: 5
m_Name: RawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &675862482
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 675862481}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1107264578}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &675862483
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 675862481}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 8400000, guid: 40d6d138feabb2440b709406c89491ac, type: 2}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!222 &675862484
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 675862481}
m_CullTransparentMesh: 1
--- !u!1 &705507993
GameObject:
m_ObjectHideFlags: 0
@@ -511,7 +789,7 @@ GameObject:
- component: {fileID: 944706250}
- component: {fileID: 944706251}
m_Layer: 0
m_Name: Capsule
m_Name: Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -604,6 +882,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 963194228}
- {fileID: 37094158}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &944706250
@@ -620,7 +899,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
rb: {fileID: 944706251}
animator: {fileID: 0}
maxVelocity: 6
maxVelocity: 4
postProcessVolume: {fileID: 37094160}
postProcessCamera: {fileID: 37094157}
--- !u!54 &944706251
Rigidbody:
m_ObjectHideFlags: 0
@@ -686,8 +967,8 @@ Camera:
m_GameObject: {fileID: 963194225}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_ClearFlags: 2
m_BackGroundColor: {r: 0.47076362, g: 0.54817104, b: 0.6698113, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
@@ -716,7 +997,7 @@ Camera:
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Bits: 96
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
@@ -880,6 +1161,7 @@ RectTransform:
m_Children:
- {fileID: 1644802856}
- {fileID: 1157830469}
- {fileID: 675862482}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -998,7 +1280,7 @@ MeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 2100000, guid: 850d5eab8c52afd4185452ca282c530b, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -1055,7 +1337,7 @@ GameObject:
- component: {fileID: 1644802858}
- component: {fileID: 1644802857}
m_Layer: 5
m_Name: Text (TMP)
m_Name: Arror
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

View File

@@ -0,0 +1,35 @@
using Event;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
namespace Camera
{
public class CameraPostProcessing : MonoBehaviour
{
private UnityEngine.Camera _camera;
private PostProcessVolume _processVolume;
private void Awake()
{
_camera = GetComponent<UnityEngine.Camera>();
_processVolume = GetComponent<PostProcessVolume>();
}
private void Start()
{
EventManager.Instance.PlayerRunning += PostProcess;
EventManager.Instance.PlayerRunStop += ProcessingStop;
}
private void PostProcess()
{
_camera.fieldOfView = Mathf.Lerp(_camera.fieldOfView, 90f, Time.deltaTime * 10f);
_processVolume.profile.GetSetting<ChromaticAberration>().intensity.value = Mathf.Lerp(_processVolume.profile.GetSetting<ChromaticAberration>().intensity.value, 1f, Time.deltaTime * 10f);
}
private void ProcessingStop()
{
_processVolume.profile.GetSetting<ChromaticAberration>().intensity.value = Mathf.Lerp(_processVolume.profile.GetSetting<ChromaticAberration>().intensity.value, 0f, Time.deltaTime * 10f);
_camera.fieldOfView = Mathf.Lerp(_camera.fieldOfView, 60f, Time.deltaTime * 10f);
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: dd8e51b43a0c4d4ca7e732246b8ad2e6
timeCreated: 1726297370

View File

@@ -0,0 +1,68 @@
using Event;
using UnityEngine;
namespace Camera
{
public class CameraShake : MonoBehaviour
{
public Transform cameraTransform;
public float amplitude = 0.05f;
public float frequency = 10.0f;
private Vector3 _originalPos;
private bool _isRunning;
private bool _isWalking;
private void Start()
{
_originalPos = cameraTransform.localPosition;
EventManager.Instance.PlayerRunning += OnPlayerRunning;
EventManager.Instance.PlayerRunStop += StopRunning;
EventManager.Instance.PlayerWalking += OnPlayerWalking;
EventManager.Instance.PlayerWalkStop += StopWalking;
}
private void OnPlayerRunning()
{
_isRunning = true;
}
private void OnPlayerWalking()
{
_isWalking = true;
}
private void StopRunning()
{
_isRunning = false;
}
private void StopWalking()
{
_isWalking = false;
}
private void Update()
{
if (_isRunning)
{
var xShake = Mathf.Sin(Time.time * frequency) * amplitude;
var yShake = Mathf.Cos(Time.time * frequency * 2) * amplitude * 0.5f;
cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0);
}
else
{
if (_isWalking)
{
var xShake = Mathf.Sin(Time.time * frequency / 2) * amplitude;
var yShake = Mathf.Cos(Time.time * frequency / 2 * 2) * amplitude * 0.5f;
cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0);
}else
cameraTransform.localPosition = _originalPos;
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d64f284209414d79a3996a0a6d1748b4
timeCreated: 1726297975

View File

@@ -0,0 +1,4 @@
namespace Event.EventHandler
{
public delegate void PlayerRunStartHandler();
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 80c4ab8259fd439ab961f53ca470750b
timeCreated: 1726298205

View File

@@ -0,0 +1,4 @@
namespace Event.EventHandler
{
public delegate void PlayerRunStopHandler();
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e59b8b89219149f3b17c92a1fcb47166
timeCreated: 1726297713

View File

@@ -0,0 +1,4 @@
namespace Event.EventHandler
{
public delegate void PlayerRunningHandler();
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7a6ecbb68bac4f7d9631c32554b2c191
timeCreated: 1726297312

View File

@@ -0,0 +1,4 @@
namespace Event.EventHandler
{
public delegate void PlayerWalkStartHandler();
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0a1e2607d7a84dab8be4a3433c5a88c1
timeCreated: 1726298933

View File

@@ -0,0 +1,4 @@
namespace Event.EventHandler
{
public delegate void PlayerWalkStopHandler();
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2cd3785317b44e7fae2becaae10a3029
timeCreated: 1726298918

View File

@@ -0,0 +1,4 @@
namespace Event.EventHandler
{
public delegate void PlayerWalkingHandler();
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 38833c7bee844164a50a86b10a7790ee
timeCreated: 1726298881

View File

@@ -34,6 +34,14 @@ namespace Event
public event CameraInterActHandler CameraInterAct;
public event DialogPopHandler DialogPop;
public event PlayerRunStartHandler PlayerRunStart;
public event PlayerRunningHandler PlayerRunning;
public event PlayerRunStopHandler PlayerRunStop;
public event PlayerWalkStartHandler PlayerWalkStart;
public event PlayerWalkStopHandler PlayerWalkStop;
public event PlayerWalkingHandler PlayerWalking;
public void OnCameraInterAct(GameObject item)
{
@@ -44,5 +52,34 @@ namespace Event
{
DialogPop?.Invoke(new DialogPopArgs(index));
}
public void OnPlayerWalkStart()
{
PlayerWalkStart?.Invoke();
}
public void OnPlayerWalkStop()
{
PlayerWalkStop?.Invoke();
}
public void OnPlayerWalking()
{
PlayerWalking?.Invoke();
}
public void OnPlayerRunStart()
{
PlayerRunStart?.Invoke();
}
public void OnPlayerRunning()
{
PlayerRunning?.Invoke();
}
public void OnPlayerRunStop()
{
PlayerRunStop?.Invoke();
}
}
}

View File

@@ -58,6 +58,7 @@ namespace Keyboard
keyMappings.Add(new KeyMapping("Right", KeyCode.D));
keyMappings.Add(new KeyMapping("Up", KeyCode.W));
keyMappings.Add(new KeyMapping("Down", KeyCode.S));
keyMappings.Add(new KeyMapping("Run", KeyCode.LeftShift));
SaveKeySettings();
}
}

View File

@@ -1,5 +1,7 @@
using Keyboard;
using Event;
using Keyboard;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
namespace Player
{
@@ -8,7 +10,11 @@ namespace Player
[SerializeField] private Rigidbody rb;
[SerializeField] private Animator animator;
[SerializeField] private float maxVelocity;
[SerializeField] private PostProcessVolume postProcessVolume;
[SerializeField] private UnityEngine.Camera postProcessCamera;
private Vector3 _velocity;
private bool _isRunning;
private bool _isWalking;
private void Update()
{
@@ -26,7 +32,36 @@ namespace Player
temp.y = rb.velocity.y;
rb.velocity = temp;
}
rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxVelocity);
if (Input.GetKey(KeySettingManager.Instance.GetKey("Run")) && KeySettingManager.Instance.Direction != Vector2.zero)
{
if (!_isRunning)
{
_isRunning = true;
_isWalking = false;
EventManager.Instance.OnPlayerWalkStop();
EventManager.Instance.OnPlayerRunStart();
}
EventManager.Instance.OnPlayerRunning();
rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxVelocity+2);
}
if (!Input.GetKey(KeySettingManager.Instance.GetKey("Run")) && KeySettingManager.Instance.Direction != Vector2.zero)
{
if (!_isWalking)
{
_isRunning = false;
_isWalking = true;
EventManager.Instance.OnPlayerRunStop();
EventManager.Instance.OnPlayerWalkStart();
}
EventManager.Instance.OnPlayerWalking();
rb.velocity = Vector3.ClampMagnitude(rb.velocity, maxVelocity);
}
if (KeySettingManager.Instance.Direction == Vector2.zero)
{
EventManager.Instance.OnPlayerRunStop();
EventManager.Instance.OnPlayerWalkStop();
}
}
}
}