From 9f10cbc5fc5a6a025c31e1019adb886aa577769f Mon Sep 17 00:00:00 2001 From: John Wigner Date: Sat, 1 Feb 2025 19:54:08 -0500 Subject: [PATCH] Wrong way indicator, collision sound, fixed winner screen --- Assets/Prefabs/Player.prefab | 295 +++++++++++++++++- Assets/Prefabs/RaceObjects/RaceManager.prefab | 4 +- Assets/Scenes/AITrack.unity | 196 +++++++++++- Assets/Scripts/Kart/HovercarController.cs | 190 ++++++----- Assets/Scripts/RaceGameManager/Checkpoint.cs | 16 +- Assets/Scripts/RaceGameManager/RaceManager.cs | 38 ++- ...niversalRenderPipelineGlobalSettings.asset | 48 +-- Assets/Sounds/Clang.wav | Bin 0 -> 21362 bytes Assets/Sounds/Clang.wav.meta | 23 ++ 9 files changed, 692 insertions(+), 118 deletions(-) create mode 100644 Assets/Sounds/Clang.wav create mode 100644 Assets/Sounds/Clang.wav.meta diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 8b4d1a6..fccc97f 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -136,6 +136,154 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &759185982889710626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1251444078252046342} + - component: {fileID: 9182074428259740160} + m_Layer: 0 + m_Name: Trail (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1251444078252046342 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759185982889710626} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1.51} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2739604471974086380} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!96 &9182074428259740160 +TrailRenderer: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759185982889710626} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, 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_Time: 0.05 + m_PreviewTimeScale: 1 + m_Parameters: + serializedVersion: 3 + widthMultiplier: 2 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.76580465 + value: 0.35365856 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0.9882353, b: 0.2509804, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 + m_Autodestruct: 0 + m_Emitting: 1 + m_ApplyActiveColorSpace: 1 --- !u!1 &1269682946183619831 GameObject: m_ObjectHideFlags: 0 @@ -152,7 +300,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &2684802689901416212 Transform: m_ObjectHideFlags: 0 @@ -284,6 +432,142 @@ TrailRenderer: m_Autodestruct: 0 m_Emitting: 1 m_ApplyActiveColorSpace: 1 +--- !u!1 &3137021681585047558 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4209967134487703583} + - component: {fileID: 4851873612469887564} + - component: {fileID: 4764067250207221816} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4209967134487703583 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3137021681585047558} + 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: 6150292465518131551} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4851873612469887564 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3137021681585047558} + m_CullTransparentMesh: 1 +--- !u!114 &4764067250207221816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3137021681585047558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: wrong way !! + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 978007a8ddca8ef408c6e3469f9496d1, type: 2} + m_sharedMaterial: {fileID: 706495386608451938, guid: 978007a8ddca8ef408c6e3469f9496d1, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 0.81568635, g: 0.13333334, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 72 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &3205211927287796582 GameObject: m_ObjectHideFlags: 0 @@ -396,6 +680,7 @@ RectTransform: - {fileID: 7211960240219488103} - {fileID: 2718635251434518077} - {fileID: 218548550622008583} + - {fileID: 4209967134487703583} m_Father: {fileID: 2739604471974086380} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -1007,7 +1292,7 @@ AudioSource: OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 8300000, guid: 08201d878210b114e813f4133c6fd322, type: 3} m_Resource: {fileID: 8300000, guid: 08201d878210b114e813f4133c6fd322, type: 3} - m_PlayOnAwake: 1 + m_PlayOnAwake: 0 m_Volume: 0.32 m_Pitch: -1.76 Loop: 0 @@ -1136,7 +1421,7 @@ AudioSource: OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 8300000, guid: c953c4df8e4207f4db2ac3d8603809d9, type: 3} m_Resource: {fileID: 8300000, guid: c953c4df8e4207f4db2ac3d8603809d9, type: 3} - m_PlayOnAwake: 1 + m_PlayOnAwake: 0 m_Volume: 0.471 m_Pitch: 1 Loop: 0 @@ -1260,6 +1545,7 @@ Transform: - {fileID: 9160487209143755372} - {fileID: 360567747910623970} - {fileID: 2684802689901416212} + - {fileID: 1251444078252046342} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!54 &7162886650759621711 @@ -1450,6 +1736,7 @@ MonoBehaviour: - {fileID: 0} - {fileID: 0} canAccelerate: 0 + wrongWayText: {fileID: 0} hoverHeight: 3 raycastDistance: 20 smoothTerrainLayer: @@ -1467,6 +1754,8 @@ MonoBehaviour: timeBeforeReset: 3 trackRaycastDistance: 20 trackTag: Track + collisionSound: {fileID: 0} + audioSource: {fileID: 0} --- !u!114 &7105996084223619230 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/RaceObjects/RaceManager.prefab b/Assets/Prefabs/RaceObjects/RaceManager.prefab index c1b6df7..3bd7f05 100644 --- a/Assets/Prefabs/RaceObjects/RaceManager.prefab +++ b/Assets/Prefabs/RaceObjects/RaceManager.prefab @@ -348,7 +348,7 @@ AudioSource: OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 8300000, guid: ad8a021cc75c4d2498f62c9468f0c57a, type: 3} m_Resource: {fileID: 8300000, guid: ad8a021cc75c4d2498f62c9468f0c57a, type: 3} - m_PlayOnAwake: 1 + m_PlayOnAwake: 0 m_Volume: 1 m_Pitch: 1 Loop: 0 @@ -477,7 +477,7 @@ AudioSource: OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 8300000, guid: b7c5bbd3b60bdec4c970a96f623bb757, type: 3} m_Resource: {fileID: 8300000, guid: b7c5bbd3b60bdec4c970a96f623bb757, type: 3} - m_PlayOnAwake: 1 + m_PlayOnAwake: 0 m_Volume: 1 m_Pitch: 1 Loop: 0 diff --git a/Assets/Scenes/AITrack.unity b/Assets/Scenes/AITrack.unity index 78b37d2..deab6b2 100644 --- a/Assets/Scenes/AITrack.unity +++ b/Assets/Scenes/AITrack.unity @@ -119,6 +119,17 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!114 &121175909 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5216672097827285888, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} + m_PrefabInstance: {fileID: 6682387771288872990} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &149090130 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 7330093094718640193, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} @@ -883,6 +894,17 @@ GameObject: m_CorrespondingSourceObject: {fileID: 3270263327541053123, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} m_PrefabInstance: {fileID: 6388558628322318749} m_PrefabAsset: {fileID: 0} +--- !u!114 &418144275 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4764067250207221816, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + m_PrefabInstance: {fileID: 6388558628322318749} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &456547926 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 8956791611276861029, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} @@ -3313,6 +3335,135 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 0 +--- !u!1 &2055079843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2055079844} + - component: {fileID: 2055079845} + m_Layer: 0 + m_Name: Collision + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2055079844 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2055079843} + 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: 1703462600} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &2055079845 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2055079843} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 6769b43fd3db2634f9e81c93ac3e093e, type: 3} + m_Resource: {fileID: 8300000, guid: 6769b43fd3db2634f9e81c93ac3e093e, type: 3} + m_PlayOnAwake: 0 + m_Volume: 0.463 + m_Pitch: -1.95 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!64 &2140352485 MeshCollider: m_ObjectHideFlags: 0 @@ -6130,6 +6281,18 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 341120459158792421, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + propertyPath: audioSource + value: + objectReference: {fileID: 2055079845} + - target: {fileID: 341120459158792421, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + propertyPath: wrongWayText + value: + objectReference: {fileID: 418144275} + - target: {fileID: 341120459158792421, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + propertyPath: collisionSound + value: + objectReference: {fileID: 8300000, guid: 6769b43fd3db2634f9e81c93ac3e093e, type: 3} - target: {fileID: 341120459158792421, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} propertyPath: 'checkpoints.Array.data[0]' value: @@ -6674,6 +6837,18 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3137021681585047558, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + propertyPath: m_Name + value: WrongWay + objectReference: {fileID: 0} + - target: {fileID: 3137021681585047558, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4764067250207221816, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + propertyPath: m_fontColor32.rgba + value: 4278198992 + objectReference: {fileID: 0} - target: {fileID: 6552287091957501518, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} propertyPath: raceManager value: @@ -6684,7 +6859,10 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 2739604471974086380, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} + insertIndex: -1 + addedObject: {fileID: 2055079844} m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: dd7b06eb9076d6c429cee20c704cae64, type: 3} --- !u!1 &6466939393724566181 stripped @@ -6885,6 +7063,14 @@ PrefabInstance: propertyPath: m_Name value: RaceManager objectReference: {fileID: 0} + - target: {fileID: 5216672097827285888, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} + propertyPath: m_fontSize + value: 72 + objectReference: {fileID: 0} + - target: {fileID: 5216672097827285888, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} + propertyPath: m_fontSizeBase + value: 72 + objectReference: {fileID: 0} - target: {fileID: 5961961246965211052, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: @@ -6933,10 +7119,18 @@ PrefabInstance: propertyPath: playerUI value: objectReference: {fileID: 377076480} + - target: {fileID: 8956791611276861029, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} + propertyPath: totalLaps + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8956791611276861029, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} propertyPath: finishLine value: objectReference: {fileID: 1535149051} + - target: {fileID: 8956791611276861029, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} + propertyPath: victoryText + value: + objectReference: {fileID: 121175909} - target: {fileID: 8956791611276861029, guid: 3d3c243c1b15b8d47b49111dee600ae6, type: 3} propertyPath: lapsLeftText value: diff --git a/Assets/Scripts/Kart/HovercarController.cs b/Assets/Scripts/Kart/HovercarController.cs index 6793504..02e1057 100644 --- a/Assets/Scripts/Kart/HovercarController.cs +++ b/Assets/Scripts/Kart/HovercarController.cs @@ -1,7 +1,12 @@ +using TMPro; using UnityEngine; +using UnityEngine.UI; // Required for UI elements public class StableHovercarController : BaseHovercarController { + [Header("UI")] + public TextMeshProUGUI wrongWayText; + [Header("Hover Settings")] public float hoverHeight = 3.0f; public float raycastDistance = 10.0f; @@ -18,9 +23,9 @@ public class StableHovercarController : BaseHovercarController public float bumpyPositionAdjustmentSpeed = 5.0f; [Header("Movement Settings")] - public float movementSpeed = 10.0f; // Max speed - public float acceleration = 5.0f; // How quickly to accelerate - public float deceleration = 7.0f; // How quickly to decelerate + public float movementSpeed = 10.0f; + public float acceleration = 5.0f; + public float deceleration = 7.0f; public float rotationSpeed = 100.0f; [Header("Reset Settings")] @@ -33,6 +38,9 @@ public class StableHovercarController : BaseHovercarController [Tooltip("Tag used on the track geometry.")] public string trackTag = "Track"; + public AudioClip collisionSound; + public AudioSource audioSource; + private float currentSpeed = 0.0f; private Rigidbody rb; private RacerProgress racerProgress; @@ -42,6 +50,9 @@ public class StableHovercarController : BaseHovercarController // Flag that indicates whether a raycast hit was detected in this physics update. private bool groundContact = false; + // Timer to track how long the next checkpoint is not in front. + private float wrongWayTimer = 0.0f; + void Start() { rb = GetComponent(); @@ -52,62 +63,115 @@ public class StableHovercarController : BaseHovercarController { Debug.LogWarning("No RacerProgress component found on this vehicle!"); } + + if (wrongWayText != null) + { + wrongWayText.enabled = false; // Hide the "Wrong Way" message initially + } } void FixedUpdate() { HandleHovering(); HandleMovement(); + CheckWrongWay(); - // If we aren’t detecting ground/track contact, count up. if (!groundContact) { noContactTimer += Time.fixedDeltaTime; if (noContactTimer >= timeBeforeReset) { ResetToCheckpoint(); - noContactTimer = 0.0f; // Reset timer after repositioning + noContactTimer = 0.0f; } } else { - // Reset the timer when ground/track is detected. noContactTimer = 0.0f; } } + private void OnCollisionEnter(Collision collision) + { + // Check if the collided object has the "Racer" tag + if (collision.gameObject.CompareTag("Racer")) + { + // Play the sound effect + if (collisionSound != null && audioSource != null) + { + audioSource.PlayOneShot(collisionSound); + } + } + } + + /// + /// Checks whether the next checkpoint is in the vehicle's forward hemisphere. + /// If it isn’t for longer than one second, the "Wrong Way" warning is displayed. + /// + void CheckWrongWay() + { + // Validate that we have checkpoints and progress data. + if (checkpoints == null || racerProgress == null || checkpoints.Length == 0) + { + return; + } + + // Determine the next checkpoint. + int nextCheckpointIndex = (racerProgress.currentCheckpointIndex + 1) % checkpoints.Length; + Transform nextCheckpoint = checkpoints[nextCheckpointIndex]; + + // Compute the direction from the vehicle to the next checkpoint. + Vector3 toNextCheckpoint = (nextCheckpoint.position - transform.position).normalized; + + // Check if the next checkpoint is in front. + // A positive dot product means the checkpoint is in the forward hemisphere. + if (Vector3.Dot(transform.forward, toNextCheckpoint) > 0) + { + // Checkpoint is in front – reset the timer and hide the warning. + wrongWayTimer = 0.0f; + if (wrongWayText != null) + { + wrongWayText.enabled = false; + } + } + else + { + // Checkpoint is behind; accumulate the timer. + wrongWayTimer += Time.fixedDeltaTime; + if (wrongWayTimer >= 1.0f) + { + if (wrongWayText != null) + { + wrongWayText.enabled = true; + } + } + } + } + void HandleHovering() { RaycastHit hit; Vector3 rayOrigin = transform.position; - - // Combine both terrain layers for the raycast. LayerMask combinedLayer = smoothTerrainLayer | bumpyTerrainLayer; - // Cast a ray downward to detect the terrain. if (Physics.Raycast(rayOrigin, -transform.up, out hit, raycastDistance, combinedLayer)) { - // We have ground contact. groundContact = true; - // Determine the triangle on the mesh that was hit. Mesh mesh = hit.collider.GetComponent().mesh; int triangleIndex = hit.triangleIndex; int vertex1Index = mesh.triangles[triangleIndex * 3 + 0]; int vertex2Index = mesh.triangles[triangleIndex * 3 + 1]; int vertex3Index = mesh.triangles[triangleIndex * 3 + 2]; - // Convert the triangle vertices to world space. Vector3 worldVertex1 = hit.collider.transform.TransformPoint(mesh.vertices[vertex1Index]); Vector3 worldVertex2 = hit.collider.transform.TransformPoint(mesh.vertices[vertex2Index]); Vector3 worldVertex3 = hit.collider.transform.TransformPoint(mesh.vertices[vertex3Index]); - // Interpolate to find the hit point on the triangle. Vector3 interpolatedPoint = worldVertex1 * hit.barycentricCoordinate.x + worldVertex2 * hit.barycentricCoordinate.y + worldVertex3 * hit.barycentricCoordinate.z; - // Similarly, interpolate the normals. Vector3 localNormal1 = mesh.normals[vertex1Index]; Vector3 localNormal2 = mesh.normals[vertex2Index]; Vector3 localNormal3 = mesh.normals[vertex3Index]; @@ -115,43 +179,36 @@ public class StableHovercarController : BaseHovercarController Vector3 worldNormal2 = hit.collider.transform.TransformDirection(localNormal2); Vector3 worldNormal3 = hit.collider.transform.TransformDirection(localNormal3); Vector3 interpolatedNormal = (worldNormal1 * hit.barycentricCoordinate.x + - worldNormal2 * hit.barycentricCoordinate.y + - worldNormal3 * hit.barycentricCoordinate.z).normalized; + worldNormal2 * hit.barycentricCoordinate.y + + worldNormal3 * hit.barycentricCoordinate.z).normalized; - // Choose the appropriate adjustment speed based on which terrain layer was hit. float currentAdjustmentSpeed = smoothPositionAdjustmentSpeed; if (IsInLayerMask(hit.collider.gameObject, bumpyTerrainLayer)) { currentAdjustmentSpeed = bumpyPositionAdjustmentSpeed; } - // Compute the target hover position. Vector3 targetPosition = interpolatedPoint + interpolatedNormal * hoverHeight; rb.MovePosition(Vector3.Lerp(transform.position, targetPosition, Time.fixedDeltaTime * currentAdjustmentSpeed)); - // Smoothly rotate the vehicle to align with the terrain. Quaternion targetRotation = Quaternion.FromToRotation(transform.up, interpolatedNormal) * transform.rotation; rb.rotation = Quaternion.Slerp(rb.rotation, targetRotation, Time.fixedDeltaTime * 5.0f); } else { - // No ground detected. groundContact = false; } } void HandleMovement() { - // Get player input. float input = Input.GetAxis("Vertical"); - if (!canAccelerate) { + if (!canAccelerate) + { input = 0; } - // Calculate target speed. float targetSpeed = input * movementSpeed; - - // Smooth acceleration/deceleration. if (input != 0) { currentSpeed = Mathf.Lerp(currentSpeed, targetSpeed, Time.fixedDeltaTime * acceleration); @@ -161,77 +218,50 @@ public class StableHovercarController : BaseHovercarController currentSpeed = Mathf.Lerp(currentSpeed, 0, Time.fixedDeltaTime * deceleration); } - // Apply forward movement. rb.linearVelocity = transform.forward * currentSpeed; - // Apply rotation. float turn = Input.GetAxis("Horizontal") * rotationSpeed; rb.angularVelocity = transform.up * turn * Mathf.Deg2Rad; } -void ResetToCheckpoint() -{ - // Ensure checkpoints and progress tracking are valid. - if (checkpoints == null || checkpoints.Length == 0) + void ResetToCheckpoint() { - Debug.LogWarning("No checkpoints have been assigned in the Inspector."); - return; - } - if (racerProgress == null) - { - Debug.LogWarning("RacerProgress component is missing. Cannot reset to checkpoint."); - return; - } - - int cpIndex = racerProgress.currentCheckpointIndex; - if (cpIndex < 0 || cpIndex >= checkpoints.Length) - { - Debug.LogWarning("Invalid checkpoint index in RacerProgress!"); - return; - } + if (checkpoints == null || checkpoints.Length == 0 || racerProgress == null) + { + return; + } - // Get the last checkpoint. - Transform lastCheckpoint = checkpoints[cpIndex]; + int cpIndex = racerProgress.currentCheckpointIndex; + if (cpIndex < 0 || cpIndex >= checkpoints.Length) + { + return; + } - // Determine the next checkpoint in sequence. - int nextCheckpointIndex = (cpIndex + 1) % checkpoints.Length; - Transform nextCheckpoint = checkpoints[nextCheckpointIndex]; + Transform lastCheckpoint = checkpoints[cpIndex]; + int nextCheckpointIndex = (cpIndex + 1) % checkpoints.Length; + Transform nextCheckpoint = checkpoints[nextCheckpointIndex]; - // Determine desired forward direction toward the next checkpoint. - Vector3 desiredForward = (nextCheckpoint.position - lastCheckpoint.position).normalized; + Vector3 desiredForward = (nextCheckpoint.position - lastCheckpoint.position).normalized; + Vector3 desiredUp = Vector3.up; + RaycastHit hit; + Vector3 rayOrigin = lastCheckpoint.position + Vector3.up * 1.0f; - // Determine the track’s surface normal using a raycast. - Vector3 desiredUp = Vector3.up; // Fallback if no track surface is detected. - RaycastHit hit; - Vector3 rayOrigin = lastCheckpoint.position + Vector3.up * 1.0f; - if (Physics.Raycast(rayOrigin, -Vector3.up, out hit, trackRaycastDistance)) - { - if (hit.collider.CompareTag(trackTag)) + if (Physics.Raycast(rayOrigin, -Vector3.up, out hit, trackRaycastDistance) && hit.collider.CompareTag(trackTag)) { desiredUp = -hit.normal; } + + desiredForward = Vector3.ProjectOnPlane(desiredForward, desiredUp).normalized; + Quaternion desiredRotation = Quaternion.LookRotation(desiredForward, desiredUp); + + transform.position = lastCheckpoint.position; + transform.rotation = desiredRotation; + + currentSpeed = 0f; + rb.linearVelocity = Vector3.zero; + rb.angularVelocity = Vector3.zero; } - // Adjust the forward vector to be perpendicular to the track's surface. - desiredForward = Vector3.ProjectOnPlane(desiredForward, desiredUp).normalized; - - // Build the final rotation. - Quaternion desiredRotation = Quaternion.LookRotation(desiredForward, desiredUp); - - // Reset position and orientation. - transform.position = lastCheckpoint.position; - transform.rotation = desiredRotation; - - // Clear any existing velocity. - currentSpeed = 0f; - rb.linearVelocity = Vector3.zero; - rb.angularVelocity = Vector3.zero; - - Debug.Log("Vehicle reset to checkpoint: " + lastCheckpoint.name + - " with front facing: " + nextCheckpoint.name); -} - - // Helper method to determine if a GameObject's layer is in a given LayerMask. private bool IsInLayerMask(GameObject obj, LayerMask mask) { diff --git a/Assets/Scripts/RaceGameManager/Checkpoint.cs b/Assets/Scripts/RaceGameManager/Checkpoint.cs index 418519d..9421c25 100644 --- a/Assets/Scripts/RaceGameManager/Checkpoint.cs +++ b/Assets/Scripts/RaceGameManager/Checkpoint.cs @@ -5,19 +5,29 @@ public class Checkpoint : MonoBehaviour [Tooltip("The order index of this checkpoint along the track.")] public int checkpointIndex = 0; + [Tooltip("The amount of checkpoints the player can skip without penalty.")] + public int skippableCheckpointsQty = 5; + private void OnTriggerEnter(Collider other) { RacerProgress progress = other.GetComponent(); if (progress != null && RaceManager.Instance != null) { - // Only update if the racer is expecting this checkpoint next. - if (progress.currentCheckpointIndex == checkpointIndex) + int totalCheckpoints = RaceManager.Instance.numberOfCheckpoints; + + // Check if this checkpoint is within the skippable range or expected next. + int distanceToCheckpoint = (checkpointIndex - progress.currentCheckpointIndex + totalCheckpoints) % totalCheckpoints; + + if (distanceToCheckpoint == 0 || (distanceToCheckpoint <= skippableCheckpointsQty + 1)) { - int totalCheckpoints = RaceManager.Instance.numberOfCheckpoints; + // Update the current checkpoint index progress.currentCheckpointIndex = (checkpointIndex + 1) % totalCheckpoints; + // If the racer just passed the final checkpoint, increment the lap count. if (checkpointIndex == totalCheckpoints - 1) + { progress.lapCount++; + } } } } diff --git a/Assets/Scripts/RaceGameManager/RaceManager.cs b/Assets/Scripts/RaceGameManager/RaceManager.cs index cce820a..36ad589 100644 --- a/Assets/Scripts/RaceGameManager/RaceManager.cs +++ b/Assets/Scripts/RaceGameManager/RaceManager.cs @@ -31,6 +31,7 @@ public class RaceManager : MonoBehaviour public CinemachineCamera victoryCamera; public CinemachineCamera playerCamera; public GameObject postRaceCanvas; + public TextMeshProUGUI victoryText; public GameObject playerUI; private List racers = new List(); @@ -108,6 +109,12 @@ public class RaceManager : MonoBehaviour { foreach (RacerProgress racer in racers) { + BaseHovercarController controller = racer.GetComponent(); + if (controller != null) + { + controller.enabled = false; // Disable the movement script. + } + Rigidbody rb = racer.GetComponent(); if (rb != null) { @@ -122,6 +129,12 @@ public class RaceManager : MonoBehaviour { foreach (RacerProgress racer in racers) { + BaseHovercarController controller = racer.GetComponent(); + if (controller != null) + { + controller.enabled = true; // Disable the movement script. + } + racer.GetComponent().canAccelerate = true; Rigidbody rb = racer.GetComponent(); if (rb != null) @@ -143,14 +156,19 @@ public class RaceManager : MonoBehaviour } private void UpdatePositionUI(int position) + { + playerPositionText.text = GetPrettyPosition(position); + } + + private string GetPrettyPosition(int position) { if (position < 4) { - playerPositionText.text = placeMapping[position - 1]; + return placeMapping[position - 1]; } else { - playerPositionText.text = position + "th"; + return position + "th"; } } @@ -178,15 +196,25 @@ public class RaceManager : MonoBehaviour private void TriggerPostRaceEvents() { + LockRacers(); if (victoryCamera != null && playerVehicle != null && playerCamera != null) { victoryCamera.gameObject.SetActive(true); playerCamera.gameObject.SetActive(false); } - if (postRaceCanvas != null) postRaceCanvas.SetActive(true); + if (postRaceCanvas != null) + { + int playerPosition = GetPlayerPosition(); + postRaceCanvas.SetActive(true); + if (playerPosition == 1) { + victoryText.text = "You win"; + } + else + { + victoryText.text = "you placed " + GetPrettyPosition(playerPosition); + } + } if (playerUI != null) playerUI.SetActive(false); - - LockRacers(); // Lock racers at the end of the race } } diff --git a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset index 35682b0..49be9eb 100644 --- a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset @@ -33,28 +33,28 @@ MonoBehaviour: m_Settings: m_SettingsList: m_List: - - rid: 6527416841684648058 - - rid: 6527416841684648059 + - rid: 6527416841684648070 + - rid: 6527416841684648071 - rid: 6852985685364965378 - rid: 6852985685364965379 - rid: 6852985685364965380 - rid: 6852985685364965381 - - rid: 6527416841684648060 - - rid: 6527416841684648061 + - rid: 6527416841684648072 + - rid: 6527416841684648073 - rid: 6852985685364965384 - rid: 6852985685364965385 - - rid: 6527416841684648062 - - rid: 6527416841684648063 - - rid: 6527416841684648064 - - rid: 6527416841684648065 - - rid: 6527416841684648066 - - rid: 6527416841684648067 + - rid: 6527416841684648074 + - rid: 6527416841684648075 + - rid: 6527416841684648076 + - rid: 6527416841684648077 + - rid: 6527416841684648078 + - rid: 6527416841684648079 - rid: 6852985685364965392 - - rid: 6527416841684648068 + - rid: 6527416841684648080 - rid: 6852985685364965394 - rid: 8712630790384254976 - rid: 6954400632628051968 - - rid: 6527416841684648069 + - rid: 6527416841684648081 m_RuntimeSettings: m_List: - rid: 6852985685364965378 @@ -97,14 +97,14 @@ MonoBehaviour: references: version: 2 RefIds: - - rid: 6527416841684648058 + - rid: 6527416841684648070 type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_Version: 0 m_StripUnusedPostProcessingVariants: 1 m_StripUnusedVariants: 1 m_StripScreenCoordOverrideVariants: 1 - - rid: 6527416841684648059 + - rid: 6527416841684648071 type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3} @@ -116,7 +116,7 @@ MonoBehaviour: m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3} m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3} - - rid: 6527416841684648060 + - rid: 6527416841684648072 type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_Version: 0 @@ -131,7 +131,7 @@ MonoBehaviour: m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2} - - rid: 6527416841684648061 + - rid: 6527416841684648073 type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} @@ -140,7 +140,7 @@ MonoBehaviour: m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2} m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, type: 2} m_DefaultSpriteMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} - - rid: 6527416841684648062 + - rid: 6527416841684648074 type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime} data: m_Version: 0 @@ -153,13 +153,13 @@ MonoBehaviour: m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, type: 3} m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, type: 3} m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, type: 3} - - rid: 6527416841684648063 + - rid: 6527416841684648075 type: {class: STP/RuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_setupCS: {fileID: 7200000, guid: 33be2e9a5506b2843bdb2bdff9cad5e1, type: 3} m_preTaaCS: {fileID: 7200000, guid: a679dba8ec4d9ce45884a270b0e22dda, type: 3} m_taaCS: {fileID: 7200000, guid: 3923900e2b41b5e47bc25bfdcbcdc9e6, type: 3} - - rid: 6527416841684648064 + - rid: 6527416841684648076 type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_Version: 1 @@ -172,12 +172,12 @@ MonoBehaviour: skyOcclusionRT: {fileID: -5126288278712620388, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3} renderingLayerCS: {fileID: -6772857160820960102, guid: 94a070d33e408384bafc1dea4a565df9, type: 3} renderingLayerRT: {fileID: -5126288278712620388, guid: 94a070d33e408384bafc1dea4a565df9, type: 3} - - rid: 6527416841684648065 + - rid: 6527416841684648077 type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_Version: 1 m_ProbeVolumeDisableStreamingAssets: 0 - - rid: 6527416841684648066 + - rid: 6527416841684648078 type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_Version: 1 @@ -187,21 +187,21 @@ MonoBehaviour: probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, type: 3} probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, type: 3} numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, type: 3} - - rid: 6527416841684648067 + - rid: 6527416841684648079 type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_version: 0 m_IncludeReferencedInScenes: 0 m_IncludeAssetsByLabel: 0 m_LabelToInclude: - - rid: 6527416841684648068 + - rid: 6527416841684648080 type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_Version: 1 probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, type: 3} probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, type: 3} probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, type: 3} - - rid: 6527416841684648069 + - rid: 6527416841684648081 type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2} diff --git a/Assets/Sounds/Clang.wav b/Assets/Sounds/Clang.wav new file mode 100644 index 0000000000000000000000000000000000000000..ee36e1b53ae0465470a6cf81cacd725f60be3658 GIT binary patch literal 21362 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
  • 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 literal 0 HcmV?d00001 diff --git a/Assets/Sounds/Clang.wav.meta b/Assets/Sounds/Clang.wav.meta new file mode 100644 index 0000000..6ceacf5 --- /dev/null +++ b/Assets/Sounds/Clang.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 6769b43fd3db2634f9e81c93ac3e093e +AudioImporter: + externalObjects: {} + serializedVersion: 8 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: