diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index c56f181..7594f02 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -64,6 +64,7 @@ + @@ -74,10 +75,15 @@ + + + + + diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 60f70e5..1c89edd 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -229,8 +229,10 @@ MonoBehaviour: throwChargeTime: 0.75 throwUpwardForce: 0 throwTriggerThreshold: 0.6 + dropClearance: 0.2 holdPoint: {fileID: 5569302833446856119} pickupRange: 1 + heldObject: {fileID: 0} --- !u!114 &9133098163257611752 MonoBehaviour: m_ObjectHideFlags: 0 @@ -243,9 +245,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b88e05c37f07ccf48bcc436a9d7def5d, type: 3} m_Name: m_EditorClassIdentifier: '::' - pickupController: {fileID: 0} + pickupController: {fileID: 3659140714710275197} currentStress: 0 maxStress: 100 + isPanicking: 0 + isParalyzed: 0 + paralyseDuration: 1.2 --- !u!1 &6898135930931977916 GameObject: m_ObjectHideFlags: 0 @@ -272,7 +277,7 @@ Transform: m_GameObject: {fileID: 6898135930931977916} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.18, y: 1.58, z: 0} + m_LocalPosition: {x: -0.18, y: 1.95, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/ProgressBar.uss b/Assets/ProgressBar.uss new file mode 100644 index 0000000..b52cb3d --- /dev/null +++ b/Assets/ProgressBar.uss @@ -0,0 +1,3 @@ +:root { + +} \ No newline at end of file diff --git a/Assets/ProgressBar.uss.meta b/Assets/ProgressBar.uss.meta new file mode 100644 index 0000000..f789b00 --- /dev/null +++ b/Assets/ProgressBar.uss.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71c3121e1dfba1d4996a4dbee8b00bf3 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} + disableValidation: 0 + unsupportedSelectorAction: 0 diff --git a/Assets/Scenes/Experiment.unity b/Assets/Scenes/Experiment.unity index 4c658e4..605cf57 100644 --- a/Assets/Scenes/Experiment.unity +++ b/Assets/Scenes/Experiment.unity @@ -185,7 +185,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3937090937419967315, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: m_Name - value: Player (4) + value: Player3 (4) objectReference: {fileID: 0} - target: {fileID: 7763498473808654306, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} propertyPath: moveSpeed @@ -211,6 +211,18 @@ PrefabInstance: propertyPath: m_GravityScale value: 2 objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.b + value: 0.5896226 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.g + value: 0.99573493 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.r + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -227,6 +239,7 @@ GameObject: - component: {fileID: 375061916} - component: {fileID: 375061915} - component: {fileID: 375061917} + - component: {fileID: 375061918} m_Layer: 5 m_Name: GameGUI m_TagString: Untagged @@ -285,6 +298,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Assembly-CSharp::ScoreManager Score: 0 +--- !u!114 &375061918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375061914} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 09397b12132be4248998c82e96a8b7c4, type: 3} + m_Name: + m_EditorClassIdentifier: '::' + images: + - {fileID: 21300000, guid: 03a067405c8cfa945a9ed2e8ff6a71dd, type: 3} + - {fileID: 21300000, guid: 4dca6d41e377b4b47ab35b821674514c, type: 3} + - {fileID: 21300000, guid: 8abb37071992fbc449fda9db6b2d86f4, type: 3} + - {fileID: 21300000, guid: 4b346aed0900f3c469fd51c6fa693e49, type: 3} + - {fileID: 21300000, guid: 33f209566f1f6ca44a4c7ae3f01d9bf5, type: 3} --- !u!1001 &377513953 PrefabInstance: m_ObjectHideFlags: 0 @@ -377,6 +408,18 @@ PrefabInstance: propertyPath: m_GravityScale value: 2 objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.r + value: 0.654902 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -722,8 +765,8 @@ Camera: m_GameObject: {fileID: 486463122} m_Enabled: 1 serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 @@ -833,8 +876,9 @@ GameObject: m_Component: - component: {fileID: 491328828} - component: {fileID: 491328827} + - component: {fileID: 491328829} m_Layer: 0 - m_Name: WinManager + m_Name: GameManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -868,6 +912,18 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &491328829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 491328826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f5cdb566677d77e438cdf195197a5b85, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::LoseScreenController --- !u!1 &495541363 GameObject: m_ObjectHideFlags: 0 @@ -1196,6 +1252,18 @@ PrefabInstance: propertyPath: m_Name value: Player (1) objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.b + value: 0.6462264 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.r + value: 0.71244085 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -1529,120 +1597,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1063739947 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1063739950} - - component: {fileID: 1063739949} - - component: {fileID: 1063739948} - m_Layer: 0 - m_Name: P_Run01 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!95 &1063739948 -Animator: - serializedVersion: 7 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1063739947} - m_Enabled: 1 - m_Avatar: {fileID: 0} - m_Controller: {fileID: 9100000, guid: 86632cb6b3835a44e87fb6f039478d61, type: 2} - m_CullingMode: 0 - m_UpdateMode: 0 - m_ApplyRootMotion: 0 - m_LinearVelocityBlending: 0 - m_StabilizeFeet: 0 - m_AnimatePhysics: 0 - m_WarningMessage: - m_HasTransformHierarchy: 1 - m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorStateOnDisable: 0 - m_WriteDefaultValuesOnDisable: 0 ---- !u!212 &1063739949 -SpriteRenderer: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1063739947} - 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_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_MaskInteraction: 0 - m_Sprite: {fileID: 21300000, guid: c28a83d936216af40976803e59feffac, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 2.87, y: 3.58} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_SpriteSortPoint: 0 ---- !u!4 &1063739950 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1063739947} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 8.13, y: 0.17, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1118230342 GameObject: m_ObjectHideFlags: 0 @@ -2262,6 +2216,18 @@ PrefabInstance: propertyPath: m_GravityScale value: 2 objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.b + value: 0.7791217 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.g + value: 0.69411767 + objectReference: {fileID: 0} + - target: {fileID: 8870760143677714522, guid: 414ae949bae840c4589b38dd91c715e0, type: 3} + propertyPath: m_Color.r + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -2916,5 +2882,4 @@ SceneRoots: - {fileID: 2100000001} - {fileID: 2100000101} - {fileID: 2200000001} - - {fileID: 1063739950} - {fileID: 491328828} diff --git a/Assets/Scenes/Lose.unity b/Assets/Scenes/Lose.unity index 9e0df59..cd62a73 100644 --- a/Assets/Scenes/Lose.unity +++ b/Assets/Scenes/Lose.unity @@ -129,6 +129,7 @@ GameObject: m_Component: - component: {fileID: 159786491} - component: {fileID: 159786490} + - component: {fileID: 159786492} m_Layer: 5 m_Name: UIdocument m_TagString: Untagged @@ -174,6 +175,18 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &159786492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 159786489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c38ae32eef77b54bb36b487e11c7422, type: 3} + m_Name: + m_EditorClassIdentifier: '::' --- !u!1 &168139977 GameObject: m_ObjectHideFlags: 0 @@ -185,6 +198,7 @@ GameObject: - component: {fileID: 168139980} - component: {fileID: 168139979} - component: {fileID: 168139978} + - component: {fileID: 168139981} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -266,6 +280,50 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &168139981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168139977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + 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_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/HealthGUIController.cs b/Assets/Scripts/HealthGUIController.cs new file mode 100644 index 0000000..60d1a16 --- /dev/null +++ b/Assets/Scripts/HealthGUIController.cs @@ -0,0 +1,84 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.UIElements; +using static UnityEditor.Experimental.GraphView.GraphView; + +public class HealthGUIController : MonoBehaviour +{ + private List players; + + public List images; + + private UIDocument uiDocument; + private List playerLifeList; + private List playerStressBarList; + + void Awake() + { + players = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).ToList(); + + uiDocument ??= GetComponent(); + if (uiDocument == null) + { + return; + } + + var root = uiDocument.rootVisualElement; + if (root == null) + { + return; + } + + playerLifeList = new List() { new Image(), new Image(), new Image(), new Image() }; + playerStressBarList = new List() { new ProgressBar(), new ProgressBar(), new ProgressBar(), new ProgressBar() }; + + playerLifeList[0] = root.Q("Player1Life"); + playerLifeList[1] = root.Q("Player2Life"); + playerLifeList[2] = root.Q("Player3Life"); + playerLifeList[3] = root.Q("Player4Life"); + + playerLifeList[0].tintColor = players[0].gameObject.GetComponent() ? players[0].gameObject.GetComponent().color : Color.white; + playerLifeList[1].tintColor = players[1].gameObject.GetComponent() ? players[1].gameObject.GetComponent().color : Color.white; + playerLifeList[2].tintColor = players[2].gameObject.GetComponent() ? players[2].gameObject.GetComponent().color : Color.white; + playerLifeList[3].tintColor = players[3].gameObject.GetComponent() ? players[3].gameObject.GetComponent().color : Color.white; + + playerStressBarList[0] = root.Q("Player1StressBar"); + playerStressBarList[1] = root.Q("Player2StressBar"); + playerStressBarList[2] = root.Q("Player3StressBar"); + playerStressBarList[3] = root.Q("Player4StressBar"); + } + + + // Update is called once per frame + void Update() + { + for (int i = 0; i < players.Count; i++) + { + //update stress bar + float ratio = Mathf.Clamp01(players[i].currentStress / players[i].maxStress); + + // Update the bar's value (0-100) + playerStressBarList[i].value = ratio * 100f; + + + //update sprite + playerLifeList[i].sprite = players[i].currentStress switch + { + >= 0 and <= 33 => images[0], + > 33 and <= 66 => images[1], + > 66 and <= 99 => images[2], + _ => images[0] + }; + + if (players[i].isParalyzed) + { + playerLifeList[i].sprite = images[3]; + } + else if (players[i].isPanicking) + { + playerLifeList[i].sprite = images[4]; + } + } + } +} diff --git a/Assets/Scripts/HealthGUIController.cs.meta b/Assets/Scripts/HealthGUIController.cs.meta new file mode 100644 index 0000000..112e912 --- /dev/null +++ b/Assets/Scripts/HealthGUIController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 09397b12132be4248998c82e96a8b7c4 \ No newline at end of file diff --git a/Assets/Scripts/LoseGuiController.cs b/Assets/Scripts/LoseGuiController.cs new file mode 100644 index 0000000..288339e --- /dev/null +++ b/Assets/Scripts/LoseGuiController.cs @@ -0,0 +1,37 @@ +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.UIElements; + +public class LoseGuiController : MonoBehaviour +{ + private UIDocument uiDocument; + private Button button; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + private void OnEnable() + { + uiDocument ??= GetComponent(); + if (uiDocument == null) + { + return; + } + + var root = uiDocument.rootVisualElement; + if (root == null) + { + return; + } + + button = root.Q