From 278868a690d5c4a62c3c83d03991cfe35b51b67d Mon Sep 17 00:00:00 2001 From: NTG Date: Mon, 15 Jan 2024 02:24:48 +0900 Subject: [PATCH] #Closes #101 #102 #103 #111 #117 #118 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + 부스터 사용시 집중선(SpeedLines) 기능 추가 + 부스터 사용시 카메라 흔들림 효과 기능 추가 + 부스터 사용시 포스트프로세싱(Vignette) 기능 추가 + 부스터 소진시 내부적인 추가 부스터 시간 추가 + 추가 부스터까지 소진시 부스터 쿨타임 적용 ㄴ 기존의 이동속도보다 2배 느려지는 기능 추가 + ShipPlayer(배) 모델링 변경 ㄴ Hand_Painted_Boats(에셋 이름) + 배 변경에 따른 대포(Cannon) 변경 및 로직 수정 ㄴ 대포의 발사 각도 변경 ㄴ 대포의 스피드 변경 + 배의 움직임 로직 변경 ㄴ 일정한 속도로 회전 ㄴ Rigidbody Freeze Rotation + 중형 물고기 모델링 추가 ㄴ HammerHeadShark(망치머리상어) 추가 ㄴ Stingray(가오리) 추가 + Layer(PostProcessing) 추가 + VisualFeedbackManager에 포스트 프로세싱 기능 관련 추가 --- BlueWater/Assets/01.Scenes/02.Ocean.unity | 2111 +++++++++++++++-- .../02.Ocean/OceanPostProcessingVolume.asset | 44 + .../OceanPostProcessingVolume.asset.meta | 8 + .../Character/Player/Type/ShipPlayer.cs | 148 +- BlueWater/Assets/02.Scripts/OceanCamera.cs | 53 + BlueWater/Assets/02.Scripts/OceanUi.cs | 7 + BlueWater/Assets/02.Scripts/Player/Cannon.cs | 21 +- BlueWater/Assets/02.Scripts/SpeedLines.cs | 66 + .../Assets/02.Scripts/SpeedLines.cs.meta | 11 + .../02.Scripts/VisualFeedbackManager.cs | 68 +- BlueWater/Assets/03.Images/SpeedLines.png | Bin 0 -> 47860 bytes .../Assets/03.Images/SpeedLines.png.meta | 135 ++ .../Boids/{FishGraph.mat => SmallFish.mat} | 2 +- ...{FishGraph.mat.meta => SmallFish.mat.meta} | 0 .../Assets/03.Materials/Boids/Stingray.mat | 166 ++ .../{Fish01.mat.meta => Stingray.mat.meta} | 2 +- .../{Boids/Fish01.mat => SpeedLines.mat} | 65 +- .../SpeedLines.mat.meta} | 5 +- .../Assets/05.Prefabs/Boids/Boids.prefab | 15 +- .../05.Prefabs/Boids/HammerheadShark.prefab | 690 ++++++ ...refab.meta => HammerheadShark.prefab.meta} | 0 .../Boids/{Boid.prefab => SmallFish.prefab} | 4 +- .../Boids/SmallFish.prefab.meta} | 4 +- .../Assets/05.Prefabs/Boids/Stingray.prefab | 169 ++ .../Boids/Stingray.prefab.meta} | 4 +- .../07.Animation/HammerheadShark.controller | 73 + .../HammerheadShark.controller.meta} | 5 +- .../Assets/08.Models/HammerheadShark.fbx | Bin 0 -> 654620 bytes .../Assets/08.Models/HammerheadShark.fbx.meta | 484 ++++ BlueWater/Assets/08.Models/STING.TIF | Bin 0 -> 172576 bytes BlueWater/Assets/08.Models/STING.TIF.meta | 140 ++ BlueWater/Assets/08.Models/Stingray.fbx | Bin 0 -> 76108 bytes BlueWater/Assets/08.Models/Stingray.fbx.meta | 107 + BlueWater/Assets/10.Shaders/SpeedLines.shader | 126 + .../Assets/10.Shaders/SpeedLines.shader.meta | 10 + .../NiceVibrations-v-2-0-1.unitypackage.meta | 7 - .../NiceVibrations-v-3-9-0.unitypackage.meta | 7 - .../Pirate_Ship_Pack/Materials/big_ship_d.mat | 1 + .../Multiplayer/Mirror.unitypackage.meta | 7 - .../Multiplayer/PUN2.unitypackage.meta | 7 - ...pewriter Sound - Package.unitypackage.meta | 7 - .../PlayMaker - Integration.unitypackage.meta | 7 - ... Scripting - Integration.unitypackage.meta | 7 - ...ss Navigator Pro Support.unitypackage.meta | 7 - .../Corgi Support.unitypackage.meta | 7 - ...versalRenderPipelineGlobalSettings 1.asset | 3 +- BlueWater/ProjectSettings/TagManager.asset | 2 +- 47 files changed, 4496 insertions(+), 316 deletions(-) create mode 100644 BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset create mode 100644 BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset.meta create mode 100644 BlueWater/Assets/02.Scripts/SpeedLines.cs create mode 100644 BlueWater/Assets/02.Scripts/SpeedLines.cs.meta create mode 100644 BlueWater/Assets/03.Images/SpeedLines.png create mode 100644 BlueWater/Assets/03.Images/SpeedLines.png.meta rename BlueWater/Assets/03.Materials/Boids/{FishGraph.mat => SmallFish.mat} (99%) rename BlueWater/Assets/03.Materials/Boids/{FishGraph.mat.meta => SmallFish.mat.meta} (100%) create mode 100644 BlueWater/Assets/03.Materials/Boids/Stingray.mat rename BlueWater/Assets/03.Materials/Boids/{Fish01.mat.meta => Stingray.mat.meta} (79%) rename BlueWater/Assets/03.Materials/{Boids/Fish01.mat => SpeedLines.mat} (80%) rename BlueWater/Assets/{Distant Lands/Cozy Weather/Custom Render Pipelines/Import for URP.unitypackage.meta => 03.Materials/SpeedLines.mat.meta} (52%) create mode 100644 BlueWater/Assets/05.Prefabs/Boids/HammerheadShark.prefab rename BlueWater/Assets/05.Prefabs/Boids/{Boid.prefab.meta => HammerheadShark.prefab.meta} (100%) rename BlueWater/Assets/05.Prefabs/Boids/{Boid.prefab => SmallFish.prefab} (97%) rename BlueWater/Assets/{Distant Lands/Cozy Weather/Custom Render Pipelines/Import for SW2 Underwater Integration.unitypackage.meta => 05.Prefabs/Boids/SmallFish.prefab.meta} (63%) create mode 100644 BlueWater/Assets/05.Prefabs/Boids/Stingray.prefab rename BlueWater/Assets/{Feel/NiceVibrations/OlderVersions/v1.7/NiceVibrations-v-1-7.unitypackage.meta => 05.Prefabs/Boids/Stingray.prefab.meta} (63%) create mode 100644 BlueWater/Assets/07.Animation/HammerheadShark.controller rename BlueWater/Assets/{Feel/FeelDemos/FeelTemplatesDemo.unitypackage.meta => 07.Animation/HammerheadShark.controller.meta} (52%) create mode 100644 BlueWater/Assets/08.Models/HammerheadShark.fbx create mode 100644 BlueWater/Assets/08.Models/HammerheadShark.fbx.meta create mode 100644 BlueWater/Assets/08.Models/STING.TIF create mode 100644 BlueWater/Assets/08.Models/STING.TIF.meta create mode 100644 BlueWater/Assets/08.Models/Stingray.fbx create mode 100644 BlueWater/Assets/08.Models/Stingray.fbx.meta create mode 100644 BlueWater/Assets/10.Shaders/SpeedLines.shader create mode 100644 BlueWater/Assets/10.Shaders/SpeedLines.shader.meta delete mode 100644 BlueWater/Assets/Feel/NiceVibrations/OlderVersions/v2.0.1/NiceVibrations-v-2-0-1.unitypackage.meta delete mode 100644 BlueWater/Assets/Feel/NiceVibrations/OlderVersions/v3.9/NiceVibrations-v-3-9-0.unitypackage.meta delete mode 100644 BlueWater/Assets/NWH/Dynamic Water Physics 2/OptionalPackages/Multiplayer/Mirror.unitypackage.meta delete mode 100644 BlueWater/Assets/NWH/Dynamic Water Physics 2/OptionalPackages/Multiplayer/PUN2.unitypackage.meta delete mode 100644 BlueWater/Assets/Plugins/Febucci/Text Animator/Extra/Typewriter Sound - Package.unitypackage.meta delete mode 100644 BlueWater/Assets/Plugins/Febucci/Text Animator/Integrations/PlayMaker - Integration.unitypackage.meta delete mode 100644 BlueWater/Assets/Plugins/Febucci/Text Animator/Integrations/Visual Scripting - Integration.unitypackage.meta delete mode 100644 BlueWater/Assets/Plugins/Pixel Crushers/Common/Third Party Support/Compass Navigator Pro Support.unitypackage.meta delete mode 100644 BlueWater/Assets/Plugins/Pixel Crushers/Common/Third Party Support/Corgi Support.unitypackage.meta diff --git a/BlueWater/Assets/01.Scenes/02.Ocean.unity b/BlueWater/Assets/01.Scenes/02.Ocean.unity index 968bded96..da0a71b6e 100644 --- a/BlueWater/Assets/01.Scenes/02.Ocean.unity +++ b/BlueWater/Assets/01.Scenes/02.Ocean.unity @@ -301,10 +301,6 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 44403560} - - targetCorrespondingSourceObject: {fileID: 176149940216585557, guid: 726da43882bc7cf4794b6164bb2acaa5, - type: 3} - insertIndex: -1 - addedObject: {fileID: 44403559} m_SourcePrefab: {fileID: 100100000, guid: 726da43882bc7cf4794b6164bb2acaa5, type: 3} --- !u!4 &44403557 stripped Transform: @@ -318,18 +314,6 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 44403556} m_PrefabAsset: {fileID: 0} ---- !u!114 &44403559 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 44403558} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 910f2fd54fe913648b37e911580e8068, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!65 &44403560 BoxCollider: m_ObjectHideFlags: 0 @@ -840,6 +824,104 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: e03ec6b6ff510d545ace4e5794f6fab9, type: 3} +--- !u!1 &87371382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 87371383} + - component: {fileID: 87371386} + - component: {fileID: 87371385} + - component: {fileID: 87371384} + m_Layer: 9 + m_Name: Rudder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &87371383 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87371382} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.849, z: -5.566} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 244711282} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &87371384 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87371382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ca3428d119d4dc5a018840803e81994, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 11400000, guid: bcb559cbb0ee0fe49b3d7a3b54039bdb, type: 2} + density: 0 + mass: 0 + volume: 0 +--- !u!114 &87371385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87371382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9118365f988afd4419c64e108a8bbc64, type: 3} + m_Name: + m_EditorClassIdentifier: + finalForceCoefficient: 1 + finalTorqueCoefficient: 1 + defaultWaterHeight: 0 + defaultWaterNormal: {x: 0, y: 1, z: 0} + defaultWaterFlow: {x: 0, y: 0, z: 0} + calculateWaterHeights: 1 + calculateWaterNormals: 0 + calculateWaterFlows: 0 + fluidDensity: 1030 + buoyantForceCoefficient: 1 + slamForceCoefficient: 1 + suctionForceCoefficient: 1 + hydrodynamicForceCoefficient: 1 + velocityDotPower: 1 + skinDragCoefficient: 0.01 + convexifyMesh: 1 + simplifyMesh: 1 + weldColocatedVertices: 1 + targetTriangleCount: 32 + originalMesh: {fileID: 4300000, guid: d9c2d3b5b3491844cb195e03ee9e1524, type: 3} + serializedSimulationMesh: + vertices: + - {x: -0.005495559, y: 0.008224702, z: -0.0014673093} + triangles: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + triangleCount: 0 + vertexCount: 0 + targetRigidbody: {fileID: 975912081} + submergedVolume: 0 +--- !u!33 &87371386 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87371382} + m_Mesh: {fileID: 4300000, guid: d9c2d3b5b3491844cb195e03ee9e1524, type: 3} --- !u!1 &100546465 GameObject: m_ObjectHideFlags: 0 @@ -874,79 +956,6 @@ Transform: - {fileID: 44403557} m_Father: {fileID: 357776295} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &107190133 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 107190135} - - component: {fileID: 107190134} - m_Layer: 0 - m_Name: DataManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &107190134 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 107190133} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 996bb30c01d484013ab3cb98f88b5c03, type: 3} - m_Name: - m_EditorClassIdentifier: - _persistent: 0 - k__BackingField: - fishInfoList: [] - mouseSpot: {fileID: 1347266192824951316, guid: 049de7a77e0534ced92b672937a0f8db, - type: 3} - boat: {fileID: 2987405546353765599, guid: 96173da392e9a408d9aea814b4cfe00e, type: 3} - assaultCard: {fileID: 6030931212828352948, guid: 410908daff8b945d8b8c446cb753408b, - type: 3} - radarTargetUi: {fileID: 1435528194207525114, guid: 68e1bc2a7cb0a4db89fc3777be734250, - type: 3} - vomit: {fileID: 8216347814332420713, guid: 55593ff8cc9154523aa7f5951f2444a5, type: 3} - nukeFire: {fileID: 128572, guid: d8aca1dfdbd0741fca61f68fd3bc8119, type: 3} - grenadeFire: {fileID: 128572, guid: 8d387b0f65dfa4cdc965c4b56216e120, type: 3} - emojiHeart: {fileID: 0} - emojiPuke: {fileID: 0} - emojiAnger: {fileID: 0} - cardType: - - {fileID: 21300000, guid: 550b6170d3e5c4cf885cf56fa1df8f6b, type: 3} - - {fileID: 21300000, guid: fa70a195a66db4c7fb6180f4205a06b1, type: 3} - - {fileID: 21300000, guid: d7aae5ed9e4924be4ac2fe09b2f729a9, type: 3} - - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} - - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} - - {fileID: 21300000, guid: 550b6170d3e5c4cf885cf56fa1df8f6b, type: 3} - - {fileID: 21300000, guid: fa70a195a66db4c7fb6180f4205a06b1, type: 3} - - {fileID: 21300000, guid: d7aae5ed9e4924be4ac2fe09b2f729a9, type: 3} - - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} - - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} - cursorTexture: {fileID: 2800000, guid: 3a146044a282641d99ba04c33b8c2bbf, type: 3} - enemyMarker: {fileID: 21300000, guid: c617a5b08493842c3833527a458fd612, type: 3} ---- !u!4 &107190135 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 107190133} - 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: 357776295} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &155713052 GameObject: m_ObjectHideFlags: 0 @@ -1247,6 +1256,8 @@ GameObject: - component: {fileID: 168896974} - component: {fileID: 168896976} - component: {fileID: 168896975} + - component: {fileID: 168896978} + - component: {fileID: 168896977} m_Layer: 0 m_Name: BaseShipCam m_TagString: Untagged @@ -1263,7 +1274,7 @@ Transform: m_GameObject: {fileID: 168896972} serializedVersion: 2 m_LocalRotation: {x: 0.2588191, y: 0, z: 0, w: 0.9659258} - m_LocalPosition: {x: -37.3, y: 21.420004, z: -34.641014} + m_LocalPosition: {x: -37.3, y: 26.420006, z: -43.301266} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -1289,7 +1300,7 @@ MonoBehaviour: m_Priority: 1 m_StandbyUpdate: 2 m_LookAt: {fileID: 0} - m_Follow: {fileID: 476261175} + m_Follow: {fileID: 975912082} m_Lens: FieldOfView: 60 OrthographicSize: 30 @@ -1541,6 +1552,101 @@ MonoBehaviour: m_FrequencyGain: 1 m_Duration: 1 m_NoiseOffsets: {x: 0, y: 0, z: 0} +--- !u!114 &168896977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168896972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 1 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 64 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!20 &168896978 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168896972} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 4 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, 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: 0} + 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!1001 &181621279 PrefabInstance: m_ObjectHideFlags: 0 @@ -1952,6 +2058,38 @@ NavMeshObstacle: m_CarveOnlyStationary: 1 m_Center: {x: -0.09900001, y: 2.229, z: 0.049000002} m_TimeToStationary: 0.5 +--- !u!1 &244711281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 244711282} + m_Layer: 9 + m_Name: Rudders + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &244711282 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 244711281} + 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: + - {fileID: 87371383} + m_Father: {fileID: 975912082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &248177876 GameObject: m_ObjectHideFlags: 0 @@ -2111,7 +2249,7 @@ MonoBehaviour: m_TargetMovementOnly: 1 m_ScreenX: 0.5 m_ScreenY: 0.5 - m_CameraDistance: 40 + m_CameraDistance: 50 m_DeadZoneWidth: 0 m_DeadZoneHeight: 0 m_DeadZoneDepth: 0 @@ -2498,7 +2636,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &280786784 Transform: m_ObjectHideFlags: 0 @@ -3161,7 +3299,6 @@ Transform: - {fileID: 100546466} - {fileID: 1775595014} - {fileID: 541711049} - - {fileID: 107190135} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} --- !u!1001 &392546456 @@ -3621,7 +3758,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &476261171 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3653,7 +3790,17 @@ MonoBehaviour: boostPower: 2 boostMaxTime: 3 boostRecoveryTime: 1.5 - isBoosting: 0 + additionalBoostTime: 1 + boostCooldownTime: 5 + useBoostSpeedLines: 1 + useBoostChangeDistance: 1 + shrinkDistance: 20 + shrinkTime: 1 + distanceReturnTime: 0.2 + useBoostCameraShaking: 1 + shakingForceCoefficient: 0.8 + useBoostVignetteEffect: 1 + vignetteForceCoefficient: 0.4 waterLayer: serializedVersion: 2 m_Bits: 16 @@ -6874,7 +7021,7 @@ PrefabInstance: - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, type: 3} propertyPath: m_LocalPosition.y - value: -25.1 + value: -40 objectReference: {fileID: 0} - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, type: 3} @@ -6946,6 +7093,12 @@ PrefabInstance: propertyPath: boidCount value: 100 objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidPrefab + value: + objectReference: {fileID: 5402562142639805275, guid: c6911733874ec6645aa30548164bb1fb, + type: 3} - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, type: 3} propertyPath: spawnRange @@ -7010,7 +7163,7 @@ GameObject: m_Component: - component: {fileID: 734248431} - component: {fileID: 734248430} - m_Layer: 0 + m_Layer: 6 m_Name: PostProcessingVolume m_TagString: Untagged m_Icon: {fileID: 0} @@ -7033,7 +7186,7 @@ MonoBehaviour: priority: 0 blendDistance: 0 weight: 1 - sharedProfile: {fileID: 11400000, guid: 0b1b99f1a0a424c56980a2490e5787e2, type: 2} + sharedProfile: {fileID: 11400000, guid: 4fe60212ac4271943ba8246d9163790f, type: 2} --- !u!4 &734248431 Transform: m_ObjectHideFlags: 0 @@ -7043,7 +7196,7 @@ Transform: m_GameObject: {fileID: 734248429} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 75.07783, y: 32.1456, z: 53.378704} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -7075,7 +7228,7 @@ Transform: m_GameObject: {fileID: 745028225} serializedVersion: 2 m_LocalRotation: {x: 0.51935977, y: 0.15213497, z: -0.094561435, w: 0.8355708} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0.0019607544, y: 0, z: -0.0012359619} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -7229,10 +7382,11 @@ GameObject: - component: {fileID: 776161957} - component: {fileID: 776161955} - component: {fileID: 776161954} + - component: {fileID: 776161963} + - component: {fileID: 776161960} - component: {fileID: 776161959} - component: {fileID: 776161961} - component: {fileID: 776161962} - - component: {fileID: 776161960} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -7316,7 +7470,7 @@ Transform: m_GameObject: {fileID: 776161953} serializedVersion: 2 m_LocalRotation: {x: 0.2588191, y: 0, z: 0, w: 0.9659258} - m_LocalPosition: {x: -37.3, y: 21.420004, z: -34.641014} + m_LocalPosition: {x: -37.3, y: 26.420006, z: -43.301266} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -7342,7 +7496,7 @@ MonoBehaviour: m_RendererIndex: -1 m_VolumeLayerMask: serializedVersion: 2 - m_Bits: 1 + m_Bits: 64 m_VolumeTrigger: {fileID: 0} m_VolumeFrameworkUpdateModeOption: 2 m_RenderPostProcessing: 1 @@ -7427,6 +7581,66 @@ MonoBehaviour: m_EditorClassIdentifier: autoInit: 1 k__BackingField: {fileID: 168896974} +--- !u!114 &776161963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 776161953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} + m_Name: + m_EditorClassIdentifier: + volumeTrigger: {fileID: 776161958} + volumeLayer: + serializedVersion: 2 + m_Bits: 64 + 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!1001 &795209795 PrefabInstance: m_ObjectHideFlags: 0 @@ -7946,8 +8160,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 957406933} serializedVersion: 2 - m_LocalRotation: {x: 0.538808, y: 0.14987604, z: -0.098102435, w: 0.8231641} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0.53880805, y: 0.14987588, z: -0.09810233, w: 0.8231641} + m_LocalPosition: {x: 0.000015258789, y: 0, z: -0.000015258789} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -8000,6 +8214,483 @@ MonoBehaviour: m_Calls: [] m_LegacyBlendHint: 0 m_ComponentOwner: {fileID: 616875524} +--- !u!1001 &969937948 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.x + value: -17.3 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.y + value: -40 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.z + value: 133 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.z + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 4541625270423798677, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_Name + value: Boids (3) + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: moveSpd + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidPrefab + value: + objectReference: {fileID: 5402562142639805275, guid: 1294b74a61e4faa49a0fb449956b4fda, + type: 3} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: escapeMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: spawnRange + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: viewRadius + value: 55 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField.y + value: 15 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f228040d76c9217409284544f353da47, type: 3} +--- !u!1 &975912075 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 975912082} + - component: {fileID: 975912081} + - component: {fileID: 975912080} + - component: {fileID: 975912079} + - component: {fileID: 975912078} + - component: {fileID: 975912077} + - component: {fileID: 975912076} + - component: {fileID: 975912083} + m_Layer: 9 + m_Name: ShipPlayer + m_TagString: ShipPlayer + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &975912076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 176cfac66084d4bfb9b4c9f11c4b137f, type: 3} + m_Name: + m_EditorClassIdentifier: + autoInit: 1 + maxSpeed: 20 + acceleration: 20 + deceleration: 10 + turnSpeed: 90 + k__BackingField: 100 + k__BackingField: 0 + k__BackingField: 500 + cannon: {fileID: 4529632010256582} + cannonCooldown: 1 + chargingSpeed: 1 + isFireMode: 0 + chargingCannon: 0 + isReloading: 0 + chargingGauge: 0 + previousGauge: 0 + boostPower: 2 + boostMaxTime: 3 + boostRecoveryTime: 1.5 + additionalBoostTime: 1 + boostCooldownTime: 5 + useBoostSpeedLines: 1 + useBoostChangeDistance: 1 + shrinkDistance: 20 + shrinkTime: 1 + distanceReturnTime: 0.2 + useBoostCameraShaking: 1 + shakingForceCoefficient: 0.8 + useBoostVignetteEffect: 1 + vignetteForceCoefficient: 0.4 + waterLayer: + serializedVersion: 2 + m_Bits: 16 +--- !u!114 &975912077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5a5473918a168c44fa0294bd4d1399f0, type: 3} + m_Name: + m_EditorClassIdentifier: + conversationEvents: + onConversationStart: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 476261179} + m_TargetAssemblyTypeName: UnityEngine.Behaviour, UnityEngine + m_MethodName: set_enabled + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + onConversationEnd: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 476261179} + m_TargetAssemblyTypeName: UnityEngine.Behaviour, UnityEngine + m_MethodName: set_enabled + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + runOnConversationEndEventsAtEndOfFrame: 0 + onConversationCancelled: + m_PersistentCalls: + m_Calls: [] + onConversationLine: + m_PersistentCalls: + m_Calls: [] + onConversationLineEnd: + m_PersistentCalls: + m_Calls: [] + onConversationLineCancelled: + m_PersistentCalls: + m_Calls: [] + onConversationResponseMenu: + m_PersistentCalls: + m_Calls: [] + onConversationResponseMenuTimeout: + m_PersistentCalls: + m_Calls: [] + onLinkedConversationStart: + m_PersistentCalls: + m_Calls: [] + barkEvents: + onBarkStart: + m_PersistentCalls: + m_Calls: [] + onBarkEnd: + m_PersistentCalls: + m_Calls: [] + onBarkLine: + m_PersistentCalls: + m_Calls: [] + sequenceEvents: + onSequenceStart: + m_PersistentCalls: + m_Calls: [] + onSequenceEnd: + m_PersistentCalls: + m_Calls: [] + questEvents: + onQuestStateChange: + m_PersistentCalls: + m_Calls: [] + onQuestTrackingEnabled: + m_PersistentCalls: + m_Calls: [] + onQuestTrackingDisabled: + m_PersistentCalls: + m_Calls: [] + onUpdateQuestTracker: + m_PersistentCalls: + m_Calls: [] + pauseEvents: + onDialogueSystemPause: + m_PersistentCalls: + m_Calls: [] + onDialogueSystemUnpause: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &975912078 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 42f17d3292d455242a47944a59dea99c, type: 3} + m_Name: + m_EditorClassIdentifier: + tagSpecificElements: [] + layerSpecificElements: [] +--- !u!114 &975912079 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 963d6358c55a0f44d8de57bee560f184, type: 3} + m_Name: + m_EditorClassIdentifier: + useDefaultGUI: 1 + guiSkin: {fileID: 0} + guiStyleName: label + alignment: 1 + color: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + textStyle: 1 + textStyleColor: {r: 0, g: 0, b: 0, a: 1} + defaultUseMessage: testtest + useKey: 101 + useButton: + enableTouch: 0 + touchArea: + origin: 0 + alignment: 0 + x: + scale: 0 + value: 0 + y: + scale: 0 + value: 0 + width: + scale: 0 + value: 0 + height: + scale: 0 + value: 0 + minPixelWidth: 0 + minPixelHeight: 0 + broadcastToChildren: 1 + actorTransform: {fileID: 0} + onSelectedUsable: + m_PersistentCalls: + m_Calls: [] + onDeselectedUsable: + m_PersistentCalls: + m_Calls: [] + usablesInRange: [] +--- !u!114 &975912080 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62899f850307741f2a39c98a8b639597, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Actions: {fileID: -944628639613478452, guid: 0acb404847404484198cbf94e6929af2, + type: 3} + m_NotificationBehavior: 0 + m_UIInputModule: {fileID: 0} + m_DeviceLostEvent: + m_PersistentCalls: + m_Calls: [] + m_DeviceRegainedEvent: + m_PersistentCalls: + m_Calls: [] + m_ControlsChangedEvent: + m_PersistentCalls: + m_Calls: [] + m_ActionEvents: [] + m_NeverAutoSwitchControlSchemes: 0 + m_DefaultControlScheme: + m_DefaultActionMap: Player + m_SplitScreenIndex: -1 + m_Camera: {fileID: 0} +--- !u!54 &975912081 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + serializedVersion: 4 + m_Mass: 111335.125 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: -0.37, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 0 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 112 + m_CollisionDetection: 0 +--- !u!4 &975912082 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -37.3, y: -1.58, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2652399630204165252} + - {fileID: 1199960034} + - {fileID: 4529632010256581} + - {fileID: 244711282} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &975912083 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 975912075} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 818177d2061f4558b66bee63b4cc78f6, type: 3} + m_Name: + m_EditorClassIdentifier: + useDefaultMass: 1 + useMassAffectors: 0 + baseMass: 111335.125 + combinedMass: 10000 + dimensions: {x: 41.628044, y: 18.221802, z: 16.193644} + useDefaultCenterOfMass: 0 + centerOfMass: {x: 0, y: -0.37, z: 0} + combinedCenterOfMass: {x: 0, y: -0.37, z: 0} + useDefaultInertia: 1 + inertiaTensor: {x: 0, y: 0, z: 0} + combinedInertiaTensor: {x: 0, y: 0, z: 0} --- !u!1001 &991171997 PrefabInstance: m_ObjectHideFlags: 0 @@ -9051,6 +9742,38 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1193870196} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1199960033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199960034} + m_Layer: 0 + m_Name: DirectionIndicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1199960034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199960033} + 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: + - {fileID: 1258025968} + m_Father: {fileID: 975912082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1220444710 PrefabInstance: m_ObjectHideFlags: 0 @@ -9393,10 +10116,6 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 1256859594} - - targetCorrespondingSourceObject: {fileID: 6209097434605892902, guid: a003617243f099842ac3523a93f80e28, - type: 3} - insertIndex: -1 - addedObject: {fileID: 1256859593} m_SourcePrefab: {fileID: 100100000, guid: a003617243f099842ac3523a93f80e28, type: 3} --- !u!4 &1256859591 stripped Transform: @@ -9410,18 +10129,6 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 1256859590} m_PrefabAsset: {fileID: 0} ---- !u!114 &1256859593 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1256859592} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 910f2fd54fe913648b37e911580e8068, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!65 &1256859594 BoxCollider: m_ObjectHideFlags: 0 @@ -9443,6 +10150,92 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.95, y: 5.824234, z: 5.53} m_Center: {x: 0.008092642, y: 2.912117, z: -0.0097852945} +--- !u!1 &1258025967 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1258025968} + - component: {fileID: 1258025969} + m_Layer: 0 + m_Name: Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1258025968 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1258025967} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 3, z: 8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1199960034} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1258025969 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1258025967} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Sprite: {fileID: 21300000, guid: 76cb51117ead0a94ba2c9b11409a3c1b, type: 3} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1001 &1284342734 PrefabInstance: m_ObjectHideFlags: 0 @@ -9573,6 +10366,37 @@ NavMeshObstacle: m_CarveOnlyStationary: 1 m_Center: {x: -0.09900001, y: 2.229, z: 0.049000002} m_TimeToStationary: 0.5 +--- !u!1 &1286537729 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1286537730} + m_Layer: 7 + m_Name: FirePos + m_TagString: Untagged + m_Icon: {fileID: -5442936267250999957, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1286537730 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286537729} + serializedVersion: 2 + m_LocalRotation: {x: 0.2588191, y: 0, z: 0, w: 0.9659258} + m_LocalPosition: {x: 0, y: 1.012, z: 1.322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4529632010256581} + m_LocalEulerAnglesHint: {x: 30, y: 0, z: 0} --- !u!4 &1302515238 stripped Transform: m_CorrespondingSourceObject: {fileID: 412716, guid: e1c4cc5b9a7d0d7479734ea4167d417e, @@ -9801,10 +10625,6 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 1332914092} - - targetCorrespondingSourceObject: {fileID: 3388854588669550803, guid: fbe5f9d69cf27974fa4899b0bcf542c8, - type: 3} - insertIndex: -1 - addedObject: {fileID: 1332914091} m_SourcePrefab: {fileID: 100100000, guid: fbe5f9d69cf27974fa4899b0bcf542c8, type: 3} --- !u!4 &1332914089 stripped Transform: @@ -9818,18 +10638,6 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 1332914088} m_PrefabAsset: {fileID: 0} ---- !u!114 &1332914091 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1332914090} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 910f2fd54fe913648b37e911580e8068, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!65 &1332914092 BoxCollider: m_ObjectHideFlags: 0 @@ -10095,8 +10903,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1354317158} serializedVersion: 2 - m_LocalRotation: {x: 0.5577791, y: 0.1475574, z: -0.10155658, w: 0.81042933} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0.5577792, y: 0.14755717, z: -0.10155645, w: 0.81042933} + m_LocalPosition: {x: 0.000015258789, y: 0, z: -0.000015258789} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -10149,6 +10957,155 @@ MonoBehaviour: m_Calls: [] m_LegacyBlendHint: 0 m_ComponentOwner: {fileID: 1038660713} +--- !u!1001 &1374397827 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.x + value: -100.5 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.y + value: -40 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.z + value: 1.4 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2146763844810315378, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.z + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 4541625270423798677, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_Name + value: Boids (2) + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: moveSpd + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidPrefab + value: + objectReference: {fileID: 5402562142639805275, guid: 1294b74a61e4faa49a0fb449956b4fda, + type: 3} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: escapeMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: spawnRange + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: viewRadius + value: 55 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField.y + value: 15 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f228040d76c9217409284544f353da47, type: 3} --- !u!1 &1388717422 GameObject: m_ObjectHideFlags: 0 @@ -10273,7 +11230,7 @@ Transform: m_GameObject: {fileID: 1389301164} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 26.277973, y: 144.99, z: -21.115704} + m_LocalPosition: {x: 26.27801, y: 144.99, z: -21.115705} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -10675,6 +11632,167 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 1446558449} m_PrefabAsset: {fileID: 0} +--- !u!114 &1446558451 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6935276925009161161, guid: 380b9020d37774c7a9f587a854c1e063, + type: 3} + m_PrefabInstance: {fileID: 1446558449} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1461379613 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.x + value: -51.1 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.y + value: -30 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.z + value: 79.2 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.x + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.y + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalScale.z + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2854089398056668840, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4541625270423798677, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: m_Name + value: Boids (4) + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: moveSpd + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidPrefab + value: + objectReference: {fileID: 5402562142639805275, guid: 6469fb143a712d448acc225487805c37, + type: 3} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: escapeMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: spawnRange + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: viewRadius + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField.x + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: k__BackingField.y + value: 8 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f228040d76c9217409284544f353da47, type: 3} --- !u!1 &1485085414 GameObject: m_ObjectHideFlags: 3 @@ -10700,8 +11818,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1485085414} serializedVersion: 2 - m_LocalRotation: {x: 0.38024554, y: 0.6187311, z: -0.462958, w: 0.50818807} - m_LocalPosition: {x: -0.00090026855, y: 0, z: -0.0045318604} + m_LocalRotation: {x: 0.3802511, y: 0.618725, z: -0.46295345, w: 0.50819546} + m_LocalPosition: {x: -0.0011329651, y: 0, z: -0.0057144165} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -12411,19 +13529,35 @@ MonoBehaviour: _persistent: 0 k__BackingField: fishInfoList: [] - mouseSpot: {fileID: 0} - boat: {fileID: 0} - assaultCard: {fileID: 0} - radarTargetUi: {fileID: 0} - vomit: {fileID: 0} - nukeFire: {fileID: 0} - grenadeFire: {fileID: 0} - emojiHeart: {fileID: 0} - emojiPuke: {fileID: 0} - emojiAnger: {fileID: 0} - cardType: [] - cursorTexture: {fileID: 0} - enemyMarker: {fileID: 0} + mouseSpot: {fileID: 1347266192824951316, guid: 049de7a77e0534ced92b672937a0f8db, + type: 3} + boat: {fileID: 2987405546353765599, guid: 96173da392e9a408d9aea814b4cfe00e, type: 3} + assaultCard: {fileID: 6030931212828352948, guid: 410908daff8b945d8b8c446cb753408b, + type: 3} + radarTargetUi: {fileID: 1435528194207525114, guid: 68e1bc2a7cb0a4db89fc3777be734250, + type: 3} + vomit: {fileID: 8216347814332420713, guid: 55593ff8cc9154523aa7f5951f2444a5, type: 3} + nukeFire: {fileID: 128572, guid: d8aca1dfdbd0741fca61f68fd3bc8119, type: 3} + grenadeFire: {fileID: 128572, guid: 8d387b0f65dfa4cdc965c4b56216e120, type: 3} + emojiHeart: {fileID: 3523074446096352133, guid: 22a7d5eadf1bb47a8ad592fa363968b7, + type: 3} + emojiPuke: {fileID: 7384045767894681630, guid: e46328608a61c4a48ab35e50c1e0e680, + type: 3} + emojiAnger: {fileID: 2169051243893775671, guid: 793d59d641d644fc687339cf74f6fb6f, + type: 3} + cardType: + - {fileID: 21300000, guid: 550b6170d3e5c4cf885cf56fa1df8f6b, type: 3} + - {fileID: 21300000, guid: fa70a195a66db4c7fb6180f4205a06b1, type: 3} + - {fileID: 21300000, guid: d7aae5ed9e4924be4ac2fe09b2f729a9, type: 3} + - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} + - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} + - {fileID: 21300000, guid: 550b6170d3e5c4cf885cf56fa1df8f6b, type: 3} + - {fileID: 21300000, guid: fa70a195a66db4c7fb6180f4205a06b1, type: 3} + - {fileID: 21300000, guid: d7aae5ed9e4924be4ac2fe09b2f729a9, type: 3} + - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} + - {fileID: 21300000, guid: 9180a011ac08440f89deb0b7aa2820f2, type: 3} + cursorTexture: {fileID: 2800000, guid: 3a146044a282641d99ba04c33b8c2bbf, type: 3} + enemyMarker: {fileID: 21300000, guid: c617a5b08493842c3833527a458fd612, type: 3} --- !u!1001 &1708098703 PrefabInstance: m_ObjectHideFlags: 0 @@ -15166,6 +16300,61 @@ NavMeshObstacle: m_CarveOnlyStationary: 1 m_Center: {x: -0.09900001, y: 2.229, z: 0.049000002} m_TimeToStationary: 0.5 +--- !u!1 &2014893524 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2014893525} + - component: {fileID: 2014893526} + m_Layer: 5 + m_Name: SpeedLines + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2014893525 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2014893524} + 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: 2105062291} + 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 &2014893526 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2014893524} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b508e85f957f4d441998fa32fb18b473, type: 3} + m_Name: + m_EditorClassIdentifier: + shader: {fileID: 4800000, guid: 3dafd9b1d17896a448d50c05e43d1f21, type: 3} + texture: {fileID: 2800000, guid: 5460bab505c65b747acf4fd1a32d9da4, type: 3} + color: {r: 1, g: 1, b: 1, a: 0.5764706} + width: 0.4 + length: 0.42 + lengthSpeed: 17 + density: 0.75 --- !u!1001 &2039624346 PrefabInstance: m_ObjectHideFlags: 0 @@ -15479,6 +16668,7 @@ RectTransform: - {fileID: 7415601899565865879} - {fileID: 480975273} - {fileID: 1446558450} + - {fileID: 2014893525} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -15520,7 +16710,8 @@ MonoBehaviour: k__BackingField: 0.5 k__BackingField: 10 processBarOffset: {x: 0, y: 0, z: 0} - k__BackingField: {fileID: 0} + k__BackingField: {fileID: 1446558451} + k__BackingField: {fileID: 2014893524} --- !u!1001 &2114222814 PrefabInstance: m_ObjectHideFlags: 0 @@ -15749,6 +16940,146 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2129584968} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1595413212644777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4143712617986135} + - component: {fileID: 33244318062754475} + - component: {fileID: 23474627402593889} + m_Layer: 0 + m_Name: pirat_cannon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!1 &1644207063785795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4529632010256581} + - component: {fileID: 4529632010256582} + m_Layer: 0 + m_Name: Cannon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &4143712617986135 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1595413212644777} + 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: 4529632010256581} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4529632010256581 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644207063785795} + serializedVersion: 2 + m_LocalRotation: {x: -0.08715578, y: 0, z: 0, w: 0.9961947} + m_LocalPosition: {x: 0, y: 5.262, z: 3.23} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4143712617986135} + - {fileID: 1286537730} + m_Father: {fileID: 975912082} + m_LocalEulerAnglesHint: {x: -10, y: 0, z: 0} +--- !u!114 &4529632010256582 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644207063785795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3e8c36fe9172849798f9c4fd87b77ec7, type: 3} + m_Name: + m_EditorClassIdentifier: + autoInit: 1 + projectileObj: {fileID: 128572, guid: 8d387b0f65dfa4cdc965c4b56216e120, type: 3} + firePos: {fileID: 1286537730} + fireAngle: 0.2 + speed: 75 + height: 30 + randomCatch: {x: 1, y: 4} + cameraShakePower: 2 + cameraShakeDuration: 0.3 +--- !u!23 &23474627402593889 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1595413212644777} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 211485be4706e2546b2fa9e5261bede5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &33244318062754475 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1595413212644777} + m_Mesh: {fileID: 7614671844300925536, guid: e174a08d577359c44bd7930fac541c9f, type: 3} --- !u!64 &64047883483704471 MeshCollider: m_ObjectHideFlags: 0 @@ -15837,6 +17168,160 @@ MeshCollider: m_Convex: 1 m_CookingOptions: 30 m_Mesh: {fileID: 43255131788321556, guid: 89cd1f768c41d774582ead143be71c37, type: 2} +--- !u!33 &90500573763691088 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7378706743454093667} + m_Mesh: {fileID: 7248041548669669315, guid: e174a08d577359c44bd7930fac541c9f, type: 3} +--- !u!33 &640465280499345089 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5955351832634056709} + m_Mesh: {fileID: -3028017588688184324, guid: e174a08d577359c44bd7930fac541c9f, type: 3} +--- !u!4 &720954570547921147 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5955351832634056709} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 12.92, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3335688658561809456} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &740866800504269180 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170096154301906649} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5134ad0f4fc645b4a8e99a88724d182a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1170096154301906649 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3335688658561809456} + - component: {fileID: 6723193483601570699} + - component: {fileID: 740866800504269180} + m_Layer: 0 + m_Name: boat_01_mast + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2652399630204165252 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7378706743454093667} + 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: + - {fileID: 3335688658561809456} + - {fileID: 8403273370487288770} + m_Father: {fileID: 975912082} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2775456861694869406 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7378706743454093667} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5134ad0f4fc645b4a8e99a88724d182a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1001 &2821987114204187354 PrefabInstance: m_ObjectHideFlags: 0 @@ -15848,17 +17333,17 @@ PrefabInstance: - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, type: 3} propertyPath: m_LocalPosition.x - value: -13.5 + value: -2.91 objectReference: {fileID: 0} - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, type: 3} propertyPath: m_LocalPosition.y - value: -9.48 + value: -15 objectReference: {fileID: 0} - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, type: 3} propertyPath: m_LocalPosition.z - value: 0 + value: 14.3 objectReference: {fileID: 0} - target: {fileID: 1800824703194841433, guid: f228040d76c9217409284544f353da47, type: 3} @@ -15920,6 +17405,12 @@ PrefabInstance: propertyPath: m_Name value: Boids objectReference: {fileID: 0} + - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, + type: 3} + propertyPath: boidPrefab + value: + objectReference: {fileID: 5402562142639805275, guid: c6911733874ec6645aa30548164bb1fb, + type: 3} - target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47, type: 3} propertyPath: escapeMode @@ -15977,6 +17468,66 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!4 &3335688658561809456 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170096154301906649} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 3.42, z: -0.43} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 720954570547921147} + m_Father: {fileID: 2652399630204165252} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &4371778850838647506 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5955351832634056709} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5134ad0f4fc645b4a8e99a88724d182a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!222 &4668650722486772898 CanvasRenderer: m_ObjectHideFlags: 0 @@ -16015,6 +17566,24 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5955351832634056709 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 720954570547921147} + - component: {fileID: 640465280499345089} + - component: {fileID: 4371778850838647506} + m_Layer: 0 + m_Name: boat_01_flag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!95 &6136937312830644462 Animator: serializedVersion: 7 @@ -16037,6 +17606,133 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 +--- !u!33 &6723193483601570699 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170096154301906649} + m_Mesh: {fileID: -1090355519079891785, guid: e174a08d577359c44bd7930fac541c9f, type: 3} +--- !u!1 &7378706743454093667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2652399630204165252} + - component: {fileID: 90500573763691088} + - component: {fileID: 2775456861694869406} + - component: {fileID: 7378706743454093670} + - component: {fileID: 7378706743454093669} + - component: {fileID: 7378706743454093668} + m_Layer: 9 + m_Name: VisualLook + m_TagString: ShipPlayer + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &7378706743454093668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7378706743454093667} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ca3428d119d4dc5a018840803e81994, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 11400000, guid: bcb559cbb0ee0fe49b3d7a3b54039bdb, type: 2} + density: 0 + mass: 111335.125 + volume: 222.67024 +--- !u!114 &7378706743454093669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7378706743454093667} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9118365f988afd4419c64e108a8bbc64, type: 3} + m_Name: + m_EditorClassIdentifier: + finalForceCoefficient: 1 + finalTorqueCoefficient: 1 + defaultWaterHeight: 0 + defaultWaterNormal: {x: 0, y: 1, z: 0} + defaultWaterFlow: {x: 0, y: 0, z: 0} + calculateWaterHeights: 1 + calculateWaterNormals: 0 + calculateWaterFlows: 0 + fluidDensity: 1030 + buoyantForceCoefficient: 9 + slamForceCoefficient: 1 + suctionForceCoefficient: 1 + hydrodynamicForceCoefficient: 1 + velocityDotPower: 1 + skinDragCoefficient: 0.01 + convexifyMesh: 1 + simplifyMesh: 1 + weldColocatedVertices: 1 + targetTriangleCount: 64 + originalMesh: {fileID: 7248041548669669315, guid: e174a08d577359c44bd7930fac541c9f, + type: 3} + serializedSimulationMesh: + vertices: + - {x: -2.4488986, y: 2.4663444, z: -3.7522728} + - {x: 2.4488993, y: 2.4663444, z: -3.7522726} + - {x: -0.0000005007197, y: 6.8083506, z: 6.138805} + - {x: -0.00000047005938, y: 5.9106164, z: 5.7326965} + - {x: -2.6124632, y: 6.1147313, z: 3.9180279} + - {x: 2.6124632, y: 6.1147313, z: 3.918028} + - {x: 3.1003277, y: 4.043529, z: 0.4490372} + - {x: 2.153518, y: 5.1724415, z: 3.918028} + - {x: -2.1535184, y: 5.1724415, z: 3.9180279} + - {x: 2.6124637, y: 4.460825, z: -4.9289637} + - {x: -2.6124628, y: 4.460825, z: -4.9289637} + - {x: 0.00000039364858, y: 3.4484823, z: -5.707463} + - {x: 1.7325904, y: 6.487637, z: -4.530168} + - {x: -0.000000037252903, y: 4.5821696e-22, z: -2.8125157e-15} + - {x: -1.7325897, y: 6.487637, z: -4.530168} + - {x: 0.00000035969623, y: 6.487637, z: -5.2577496} + - {x: -3.1003277, y: 4.043529, z: 0.44903675} + - {x: -1.6823297, y: 1.2968589, z: 1.9576544} + - {x: 1.6823295, y: 1.2968589, z: 1.9576548} + - {x: 0.00000020998584, y: 0.43785053, z: -3.2747762} + triangles: 010000000600000012000000120000000d0000000100000012000000110000000d000000000000000d0000001100000011000000100000000000000002000000050000000c000000120000000600000005000000130000000b00000001000000010000000d00000013000000000000000b00000013000000130000000d000000000000000900000006000000010000000b000000090000000100000005000000060000000900000005000000090000000c000000090000000b0000000f0000000f0000000c00000009000000020000000c0000000f0000000f0000000e000000020000000400000010000000110000000e0000000400000002000000030000001100000012000000100000000a00000000000000000000000a0000000b0000000e0000000a00000004000000040000000a000000100000000f0000000b0000000a0000000a0000000e0000000f000000080000000300000002000000020000000400000008000000030000000800000011000000110000000800000004000000020000000300000007000000070000000500000002000000120000000700000003000000050000000700000012000000 + triangleCount: 0 + vertexCount: 0 + targetRigidbody: {fileID: 975912081} + submergedVolume: 0 +--- !u!64 &7378706743454093670 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7378706743454093667} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 7248041548669669315, guid: e174a08d577359c44bd7930fac541c9f, type: 3} --- !u!1 &7415601898274685977 GameObject: m_ObjectHideFlags: 0 @@ -16234,7 +17930,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &7415601899565865879 RectTransform: m_ObjectHideFlags: 0 @@ -16438,7 +18134,7 @@ RectTransform: m_Father: {fileID: 7415601898274685978} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 5, y: 10} m_Pivot: {x: 0.5, y: 0.5} @@ -16528,7 +18224,7 @@ RectTransform: m_Father: {fileID: 7415601898878557319} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} @@ -16570,6 +18266,91 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7415601900150503606} m_CullTransparentMesh: 0 +--- !u!33 &7453780286455553244 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8331140830047541328} + m_Mesh: {fileID: 6847518756029031712, guid: e174a08d577359c44bd7930fac541c9f, type: 3} +--- !u!1 &8331140830047541328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8403273370487288770} + - component: {fileID: 7453780286455553244} + - component: {fileID: 8919935956366376945} + m_Layer: 0 + m_Name: boat_01_wheel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8403273370487288770 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8331140830047541328} + serializedVersion: 2 + m_LocalRotation: {x: 0.1484949, y: -0, z: -0, w: 0.9889132} + m_LocalPosition: {x: 0, y: 6.685426, z: -2.8368456} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2652399630204165252} + m_LocalEulerAnglesHint: {x: 17.079, y: 0, z: 0} +--- !u!23 &8919935956366376945 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8331140830047541328} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5134ad0f4fc645b4a8e99a88724d182a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -16584,6 +18365,7 @@ SceneRoots: - {fileID: 1540310984} - {fileID: 2105062291} - {fileID: 1560348101} + - {fileID: 975912082} - {fileID: 476261175} - {fileID: 357776295} - {fileID: 200595900} @@ -16592,3 +18374,6 @@ SceneRoots: - {fileID: 280786784} - {fileID: 2821987114204187354} - {fileID: 718723263} + - {fileID: 1374397827} + - {fileID: 969937948} + - {fileID: 1461379613} diff --git a/BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset b/BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset new file mode 100644 index 000000000..2abea3cc8 --- /dev/null +++ b/BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset @@ -0,0 +1,44 @@ +%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: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: OceanPostProcessingVolume + m_EditorClassIdentifier: + components: + - {fileID: 751907871111195936} +--- !u!114 &751907871111195936 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 899c54efeace73346a0a16faa3afe726, type: 3} + m_Name: Vignette + m_EditorClassIdentifier: + active: 1 + color: + m_OverrideState: 1 + m_Value: {r: 0.262, g: 0, b: 0, a: 1} + center: + m_OverrideState: 1 + m_Value: {x: 0.5, y: 0.5} + intensity: + m_OverrideState: 1 + m_Value: 0 + smoothness: + m_OverrideState: 1 + m_Value: 1 + rounded: + m_OverrideState: 1 + m_Value: 1 diff --git a/BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset.meta b/BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset.meta new file mode 100644 index 000000000..2ec0fc218 --- /dev/null +++ b/BlueWater/Assets/01.Scenes/02.Ocean/OceanPostProcessingVolume.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fe60212ac4271943ba8246d9163790f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Character/Player/Type/ShipPlayer.cs b/BlueWater/Assets/02.Scripts/Character/Player/Type/ShipPlayer.cs index 6504129f5..cbb6f9010 100644 --- a/BlueWater/Assets/02.Scripts/Character/Player/Type/ShipPlayer.cs +++ b/BlueWater/Assets/02.Scripts/Character/Player/Type/ShipPlayer.cs @@ -2,6 +2,7 @@ using System.Collections; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.InputSystem; +using Vignette = UnityEngine.Rendering.Universal.Vignette; // ReSharper disable once CheckNamespace namespace BlueWaterProject @@ -14,13 +15,15 @@ namespace BlueWaterProject [Title("쉽의 기본 설정")] [Tooltip("최대 스피드")] - [SerializeField] private float maxSpeed = 10f; + [SerializeField] private float maxSpeed = 20f; + [DisableIf("@true")] + [SerializeField]private float defaultMaxSpeed; [Tooltip("가속 수치")] - [SerializeField] private float acceleration = 2f; + [SerializeField] private float acceleration = 20f; [Tooltip("감속 수치")] - [SerializeField] private float deceleration = 2f; + [SerializeField] private float deceleration = 10f; [Tooltip("회전 속도")] - [SerializeField] private float turnSpeed = 10f; + [SerializeField] private float turnSpeed = 90f; [Tooltip("배의 최대 체력")] [field: SerializeField] public float MaxHp { get; private set; } = 100; [Tooltip("배의 현재 체력")] @@ -32,25 +35,59 @@ namespace BlueWaterProject [SerializeField] private Cannon cannon; [SerializeField] private float cannonCooldown = 1f; [SerializeField] private float chargingSpeed = 1f; + + [DisableIf("@true")] [SerializeField] private bool isFireMode; + [DisableIf("@true")] [SerializeField] private bool chargingCannon; + [DisableIf("@true")] [SerializeField] private bool isReloading; + [DisableIf("@true")] [SerializeField] private float chargingGauge; + [DisableIf("@true")] [SerializeField] private float previousGauge; [Title("부스트")] [SerializeField] private float boostPower = 2f; [SerializeField] private float boostMaxTime = 3f; [SerializeField] private float boostRecoveryTime = 1.5f; + + [SerializeField] private float additionalBoostTime = 1f; + [SerializeField] private float boostCooldownTime = 5f; + private float currentAdditionalBoostTime; + private float currentBoostCooldownTime; + + [Space(10)] + [SerializeField] private bool useBoostSpeedLines = true; + [SerializeField] private bool useBoostChangeDistance = true; + + [ShowIf("@useBoostChangeDistance")] + [SerializeField] private float shrinkDistance = 20f; + [ShowIf("@useBoostChangeDistance")] + [SerializeField] private float shrinkTime = 1f; + [ShowIf("@useBoostChangeDistance")] + [SerializeField] private float distanceReturnTime = 0.2f; + + [SerializeField] private bool useBoostCameraShaking = true; + [ShowIf("@useBoostCameraShaking")] + [SerializeField] private float shakingForceCoefficient = 0.8f; + + [SerializeField] private bool useBoostVignetteEffect = true; + [ShowIf("@useBoostVignetteEffect")] + [SerializeField] private float vignetteForceCoefficient = 0.4f; + + [DisableIf("@true")] [SerializeField] private bool isBoosting; + [Title("Extensions Data")] + [SerializeField] private LayerMask waterLayer; + private PlayerInput playerInput; private Rigidbody rb; private GameObject directionIndicator; - - [SerializeField] private LayerMask waterLayer; + private Vector2 movementInput; - + [Button("셋팅 초기화")] private void Init() { @@ -63,7 +100,8 @@ namespace BlueWaterProject directionIndicator.SetActive(false); waterLayer = LayerMask.GetMask("Water"); - + + defaultMaxSpeed = maxSpeed; SetCurrentHp(MaxHp); } @@ -106,12 +144,9 @@ namespace BlueWaterProject private void Start() { - - } - - private void FixedUpdate() - { - + waterLayer = LayerMask.GetMask("Water"); + defaultMaxSpeed = maxSpeed; + SetCurrentHp(MaxHp); } private void Update() @@ -136,7 +171,13 @@ namespace BlueWaterProject if (moveDirection != Vector3.zero) { var targetRotation = Quaternion.LookRotation(moveDirection, Vector3.up); - rb.rotation = Quaternion.Slerp(rb.rotation, targetRotation, turnSpeed * Time.fixedDeltaTime); + var angleToRotate = Quaternion.Angle(rb.rotation, targetRotation); + + var rotationStep = turnSpeed / angleToRotate; + rb.rotation = Quaternion.Slerp(rb.rotation, targetRotation, rotationStep * Time.fixedDeltaTime); + + // var targetRotation = Quaternion.LookRotation(moveDirection, Vector3.up); + // rb.rotation = Quaternion.Slerp(rb.rotation, targetRotation, turnSpeed * Time.fixedDeltaTime); } } @@ -182,15 +223,62 @@ namespace BlueWaterProject { if (isBoosting) { - UiManager.Inst.OceanUi.ShipBoostSlider.value += Time.deltaTime * (1f / boostMaxTime); - if (UiManager.Inst.OceanUi.ShipBoostSlider.value >= 1f) + HandleBoostUsage(); + } + else + { + HandleBoostRecharge(); + } + + if (useBoostVignetteEffect && UiManager.Inst.OceanUi.ShipBoostSlider.value > 0f) + { + VisualFeedbackManager.Inst.SetVignetteIntensity(UiManager.Inst.OceanUi.ShipBoostSlider.value * vignetteForceCoefficient); + } + } + + private void HandleBoostUsage() + { + UiManager.Inst.OceanUi.ShipBoostSlider.value += Time.deltaTime * (1f / boostMaxTime); + if (useBoostCameraShaking) + { + var shakeValue = UiManager.Inst.OceanUi.ShipBoostSlider.value * shakingForceCoefficient; + VisualFeedbackManager.Inst.CameraShake(CameraManager.Inst.OceanCamera.BaseShipCam, shakeValue); + } + if (UiManager.Inst.OceanUi.ShipBoostSlider.value >= 1f && currentAdditionalBoostTime <= 0) + { + currentAdditionalBoostTime = additionalBoostTime; + } + + if (currentAdditionalBoostTime > 0) + { + currentAdditionalBoostTime -= Time.deltaTime; + if (currentAdditionalBoostTime <= 0) { + currentBoostCooldownTime = boostCooldownTime; + maxSpeed *= 0.5f; ShipStopBoost(); } } + } + + private void HandleBoostRecharge() + { + if (currentBoostCooldownTime > 0) + { + currentBoostCooldownTime -= Time.deltaTime; + UiManager.Inst.OceanUi.ShipBoostSlider.value = 1f; + } else { UiManager.Inst.OceanUi.ShipBoostSlider.value -= Time.deltaTime * (1f / boostRecoveryTime); + if (!Mathf.Approximately(defaultMaxSpeed, maxSpeed)) + { + maxSpeed = defaultMaxSpeed; + } + if (currentAdditionalBoostTime > 0f) + { + currentAdditionalBoostTime = 0f; + } } } @@ -306,21 +394,35 @@ namespace BlueWaterProject private void ShipBoost() { - if (UiManager.Inst.OceanUi.ShipBoostSlider.value >= 1f) + if (currentBoostCooldownTime > 0) return; + + isBoosting = true; + if (useBoostSpeedLines) { - isBoosting = false; + UiManager.Inst.OceanUi.SetActiveSpeedLine(true); } - else + if (useBoostChangeDistance) { - isBoosting = true; + CameraManager.Inst.OceanCamera.ChangeDistance(shrinkDistance, shrinkTime); + } + if (useBoostVignetteEffect) + { + VisualFeedbackManager.Inst.ToggleEffect(true); } } private void ShipStopBoost() { - if (!isBoosting) return; - isBoosting = false; + + if (useBoostSpeedLines) + { + UiManager.Inst.OceanUi.SetActiveSpeedLine(false); + } + if (useBoostChangeDistance) + { + CameraManager.Inst.OceanCamera.DefaultDistance(distanceReturnTime); + } } #endregion diff --git a/BlueWater/Assets/02.Scripts/OceanCamera.cs b/BlueWater/Assets/02.Scripts/OceanCamera.cs index 6974518c6..db5024110 100644 --- a/BlueWater/Assets/02.Scripts/OceanCamera.cs +++ b/BlueWater/Assets/02.Scripts/OceanCamera.cs @@ -1,3 +1,4 @@ +using System.Collections; using System.Collections.Generic; using Cinemachine; using Sirenix.OdinInspector; @@ -16,6 +17,10 @@ namespace BlueWaterProject private List cineCamList; private GameObject cineCams; + private CinemachineFramingTransposer framingTransposer; + private Coroutine distanceCoroutine; + + private float defaultDistance; private const int CINE_CAM_NUM = 1; @@ -46,6 +51,8 @@ namespace BlueWaterProject Debug.LogError("BaseShipCam is null error"); return; } + framingTransposer = BaseShipCam.GetCinemachineComponent(); + defaultDistance = framingTransposer.m_CameraDistance; cineCamList = new List(CINE_CAM_NUM) { @@ -61,5 +68,51 @@ namespace BlueWaterProject CameraManager.Inst.MainCam = Camera.main; } + + public void ChangeDistance(float addDistance, float time) + { + if (distanceCoroutine != null) + { + StopCoroutine(distanceCoroutine); + } + distanceCoroutine = StartCoroutine(ChangeDistanceCoroutine(addDistance, time)); + } + + private IEnumerator ChangeDistanceCoroutine(float addDistance, float time) + { + var changeDistance = framingTransposer.m_CameraDistance + addDistance; + var updateTime = 0f; + while (updateTime < time) + { + updateTime += Time.deltaTime; + framingTransposer.m_CameraDistance = Mathf.Lerp(framingTransposer.m_CameraDistance, + changeDistance, updateTime / time); + yield return null; + } + yield return null; + } + + public void DefaultDistance(float time) + { + if (distanceCoroutine != null) + { + StopCoroutine(distanceCoroutine); + } + distanceCoroutine = StartCoroutine(DefaultDistanceCoroutine(time)); + } + + private IEnumerator DefaultDistanceCoroutine(float time) + { + var updateTime = 0f; + while (updateTime < time) + { + updateTime += Time.deltaTime; + framingTransposer.m_CameraDistance = Mathf.Lerp(framingTransposer.m_CameraDistance, + defaultDistance, updateTime / time); + yield return null; + } + framingTransposer.m_CameraDistance = defaultDistance; + yield return null; + } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/OceanUi.cs b/BlueWater/Assets/02.Scripts/OceanUi.cs index 12aacf219..c9cea9e1b 100644 --- a/BlueWater/Assets/02.Scripts/OceanUi.cs +++ b/BlueWater/Assets/02.Scripts/OceanUi.cs @@ -83,6 +83,8 @@ namespace BlueWaterProject [field: SerializeField] public Slider ShipBoostSlider { get; set; } + [field: SerializeField] public GameObject SpeedLines { get; set; } + private Canvas canvas; [Button("셋팅 초기화")] @@ -104,6 +106,9 @@ namespace BlueWaterProject ShipBoostSlider = canvas.transform.Find("ShipBoostSlider").GetComponent(); ShipBoostSlider.value = 0f; + + SpeedLines = canvas.transform.Find("SpeedLines").gameObject; + SpeedLines.SetActive(false); } private void Awake() @@ -126,5 +131,7 @@ namespace BlueWaterProject ProcessBar.SetPosition(result); } } + + public void SetActiveSpeedLine(bool value) => SpeedLines.SetActive(value); } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Player/Cannon.cs b/BlueWater/Assets/02.Scripts/Player/Cannon.cs index e2fc94589..d0d387418 100644 --- a/BlueWater/Assets/02.Scripts/Player/Cannon.cs +++ b/BlueWater/Assets/02.Scripts/Player/Cannon.cs @@ -1,5 +1,7 @@ using Sirenix.OdinInspector; +using Unity.Mathematics; using UnityEngine; +using Random = UnityEngine.Random; // ReSharper disable once CheckNamespace namespace BlueWaterProject @@ -12,14 +14,15 @@ namespace BlueWaterProject [Title("캐논 변수")] [SerializeField] private GameObject projectileObj; [SerializeField] private Transform firePos; - [SerializeField] private float fireAngle = 30f; - [SerializeField] private float speed = 20f; - [SerializeField] private float height = 50f; + [Range(0f, 0.5f)] + [SerializeField] private float fireAngle = 0.2f; + [SerializeField] private float speed = 75f; + [SerializeField] private float height = 20f; [SerializeField] private Vector2 randomCatch = new(1, 4); [Title("캐논 발사 카메라 효과")] - [SerializeField] private float cameraShakePower = 0.5f; - [SerializeField] private float cameraShakeDuration = 0.5f; + [SerializeField] private float cameraShakePower = 2f; + [SerializeField] private float cameraShakeDuration = 0.3f; private float cannonRadius; private LayerMask boidsLayer; @@ -45,10 +48,14 @@ namespace BlueWaterProject public void Fire(float chargingGauge) { VisualFeedbackManager.Inst.CameraShake(CameraManager.Inst.OceanCamera.BaseShipCam, cameraShakePower, cameraShakeDuration); - var projectile = Instantiate(projectileObj, firePos.position, firePos.rotation); + var addAngle = chargingGauge * fireAngle; + var firePosRotation = firePos.rotation.eulerAngles; + firePosRotation.x -= addAngle; + var projectile = Instantiate(projectileObj, firePos.position, Quaternion.Euler(firePosRotation)); var particleWeapon = projectile.GetComponent(); particleWeapon.onHitAction.AddListener(HandleCannonHit); - projectile.GetComponent().AddForce(projectile.transform.forward * (chargingGauge * speed)); + //projectile.GetComponent().AddForce(projectile.transform.forward * (chargingGauge * speed)); + projectile.GetComponent().velocity = projectile.transform.forward * speed; } private void HandleCannonHit(RaycastHit hit, float power) diff --git a/BlueWater/Assets/02.Scripts/SpeedLines.cs b/BlueWater/Assets/02.Scripts/SpeedLines.cs new file mode 100644 index 000000000..0aaa8717c --- /dev/null +++ b/BlueWater/Assets/02.Scripts/SpeedLines.cs @@ -0,0 +1,66 @@ +using UnityEngine; + +namespace _02.Scripts +{ + [ExecuteInEditMode] + public class SpeedLines : MonoBehaviour + { + [SerializeField] private Shader shader; + [SerializeField] private Texture texture; + [SerializeField] private Color color = new(1,1,1,0.1f); + + [Range(0,1)] + [SerializeField] private float width = 0.4f; + [Range(0, 1)] + [SerializeField] private float length = 0.42f; + [Range(0, 100)] + [SerializeField] private float lengthSpeed = 17; + [Range(0, 1)] + [SerializeField] private float density = 0.75f; + + private Material material; + + private static readonly int Color = Shader.PropertyToID("_Color"); + private static readonly int Width = Shader.PropertyToID("_Width"); + private static readonly int Length = Shader.PropertyToID("_Length"); + private static readonly int LengthSpeed = Shader.PropertyToID("_LengthSpeed"); + private static readonly int Density = Shader.PropertyToID("_Density"); + private static readonly int Fbm = Shader.PropertyToID("_FBM"); + + private void Awake() + { + if (material) return; + + material = new Material(shader); + material.SetTexture(Fbm, texture); + } + + private void LateUpdate() + { + material.SetColor(Color, color); + material.SetFloat(Width, width); + material.SetFloat(Length, length); + material.SetFloat(LengthSpeed, lengthSpeed); + material.SetFloat(Density, density); + } + + public void OnRenderObject() + { + material.SetPass(0); + GL.PushMatrix(); + GL.LoadOrtho(); + + GL.Begin(GL.QUADS); + GL.TexCoord(new Vector3(0, 0, 0)); + GL.Vertex3(0, 0, 0); + GL.TexCoord(new Vector3(0, 1, 0)); + GL.Vertex3(0, 1, 0); + GL.TexCoord(new Vector3(1, 1, 0)); + GL.Vertex3(1, 1, 0); + GL.TexCoord(new Vector3(1, 0, 0)); + GL.Vertex3(1, 0, 0); + GL.End(); + GL.PopMatrix(); + } + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/SpeedLines.cs.meta b/BlueWater/Assets/02.Scripts/SpeedLines.cs.meta new file mode 100644 index 000000000..b7a1ace14 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/SpeedLines.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b508e85f957f4d441998fa32fb18b473 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/VisualFeedbackManager.cs b/BlueWater/Assets/02.Scripts/VisualFeedbackManager.cs index 2fdb62599..f2f8bbe97 100644 --- a/BlueWater/Assets/02.Scripts/VisualFeedbackManager.cs +++ b/BlueWater/Assets/02.Scripts/VisualFeedbackManager.cs @@ -1,15 +1,37 @@ +using System; using System.Collections; -using System.Collections.Generic; using Cinemachine; using MoreMountains.Feedbacks; using MoreMountains.FeedbacksForThirdParty; using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using UnityEngine.SceneManagement; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class VisualFeedbackManager : Singleton { + private Vignette vignette; + + private void OnEnable() + { + SceneManager.sceneLoaded += OnSceneLoaded; + } + + private void OnDisable() + { + SceneManager.sceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + vignette = null; + + vignette = GetEffect(); + } + #region HitStop /// @@ -49,6 +71,50 @@ namespace BlueWaterProject mmfPlayer.PlayFeedbacks(); } + #region PostProcessing + + public void ToggleEffect(bool value) where T : VolumeComponent + { + var effect = GetEffect(); + if (effect == null) + { + print(typeof(T) + "효과가 없습니다."); + return; + } + effect.active = value; + } + + private T GetEffect() where T : VolumeComponent + { + var postProcessVolume = FindAnyObjectByType(); + if (postProcessVolume == null) + { + print("Volume 컴포넌트를 가진 오브젝트가 없습니다."); + return null; + } + postProcessVolume.profile.TryGet(out T effect); + return effect; + } + + public void SetVignetteIntensity(float intensity) + { + if (vignette == null) + { + vignette = GetEffect(); + } + + if (vignette != null) + { + vignette.intensity.value = intensity; + } + else + { + print("vignette is null."); + } + } + + #endregion + #endregion } } diff --git a/BlueWater/Assets/03.Images/SpeedLines.png b/BlueWater/Assets/03.Images/SpeedLines.png new file mode 100644 index 0000000000000000000000000000000000000000..dd46b3e393a179892283917b319a3f3daddb13f5 GIT binary patch literal 47860 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