From 532ede9714f48923e2ce09e321d819b2254a882d Mon Sep 17 00:00:00 2001 From: Alexandre Coirier Date: Thu, 19 Mar 2026 21:34:27 +0100 Subject: [PATCH] Checkpoint --- .../Models/Platforms/Sources/checkpoint.fbx | Bin 0 -> 29728 bytes .../Platforms/Sources/checkpoint.fbx.meta | 110 ++++++++++ Assets/Content/Prefabs/Checkpoint.prefab | 188 ++++++++++++++++++ Assets/Content/Prefabs/Checkpoint.prefab.meta | 7 + Assets/Content/Scenes/Main.unity | 133 ++++++++++++- Assets/Content/Scripts/Checkpoint.cs | 31 ++- Assets/Content/Scripts/Player.cs | 55 +++-- Assets/Content/Scripts/PlayerEvent.cs | 24 +++ Assets/Content/Scripts/PlayerEvent.cs.meta | 2 + 9 files changed, 531 insertions(+), 19 deletions(-) create mode 100644 Assets/Content/Models/Platforms/Sources/checkpoint.fbx create mode 100644 Assets/Content/Models/Platforms/Sources/checkpoint.fbx.meta create mode 100644 Assets/Content/Prefabs/Checkpoint.prefab create mode 100644 Assets/Content/Prefabs/Checkpoint.prefab.meta create mode 100644 Assets/Content/Scripts/PlayerEvent.cs create mode 100644 Assets/Content/Scripts/PlayerEvent.cs.meta diff --git a/Assets/Content/Models/Platforms/Sources/checkpoint.fbx b/Assets/Content/Models/Platforms/Sources/checkpoint.fbx new file mode 100644 index 0000000000000000000000000000000000000000..6736a286344068674c2739507c1c2596c3175ee5 GIT binary patch literal 29728 zcmd6Q2|Scr`2R?ylC(%y8(Oa0iX>ziYmzl8SBVCL2{U76glu(HDn&Py7E8;$xhiey zO4&-G1u3N>gi^@9gz!J-UCekhOm%<1-~W6*<~{G3=X}reJm)#jdCqyyyo@QnP81eJ zW|i*mGP*Q6h2<+FLz+&Km`x(h8c!NDO$M~9sT3zF%fN?2rL$=aItL>Z!mgvR>%@N2 z4OA8+G^!IOk)rrej|0>=9b_Pf58VU>=FsETm5_uKDoBjw`RO3T5(uPW58P$l8NVa?^MwtS2xEcWrQUD(kVSS3P(G)-s z%ZFg(YK9lfXbhmpnZeu+guSb!0VAPQ!%tmc6NXhl}~#`5rL;qK)^qqAkUp*=6NOktVAQl+J8ulV%T zICG9Gm9@&9;=)cRw1sm!ex05^)tN@8!45SF;>Rj1ABh<+-k2OlJl4vQN~appof%eB zL6M<5!-3)sZ%IPjZ=mMav#Bh73Ws8hDFxS@7zQ*Fnw}LeC6hpjbKP%PPN3?gkyw4g zWsE76LxJu6D+tPKK18F|(Kzl@D~R38heX86%V8_kk%JJ;!MMSN!&x4!c?fN=KQ3jSiY>p|uZ^##^u$Oe%{* zqq0>LLNOU|QBGqOgeZr8%-~nO+X=G)LQ26nA%B1_xAOv#H>s2Rs32 z%GQ+OM0ID|TDVg<&J30Z+tvyUZ$~QI*3p&f=*DEw=$xg_4nC_#!^TPdWAhw(O9Grv z09h-RBhJPDhs^K6n8!MpG>^+X93$o|8gK>_cVxhT&So;a=uW7zAz=kUbX{)k={&Xl zb(l<`XvCjypwgXyh4S_xtb}61CV>e9y|dj^AqhyhL1>`2P_4g!EY2A(wiyM?6@w!~ z`AjLkls^fmWG?CqKB(CIG6XPikt@CsfK9o;&|&qn3w#B29hlSX4Ncb}TEz>vTD6)6 zDk!SSD=5iBWElmOm5Pch6%?1MtWdiNRRj{Q6&_=o1d98cSw(ZF4xx_!n~~CrF^?PD zd_)uy?9#CyYeHdjtSH;4PJFCwEhGX7mt7CNh1Fr-^;hRL34zV+9|E{07hH-T_z()l z?QO(36bI*7n+rRWAFN;ox0Qfw#zmGKfQ%d14_e%BnD@pd_>0?)EXej-9M2fnapcgp zQGs_yCal2+q$8;Nzu>E%5x76ZM{M0ro96)@AyybVY-ao%U2NY<_?4M6~ z<`EAH#@K&xS&Icxcz6IE5KNx(|#SekwJ&f}|d|Ca6OK1`?strMp4 z0|IgAnV?TvqM)=yQB6ic74=LjRa6uz2>^;nbrPvR&|C}(1PL@{9K2}mPMQjwDHsCb zG64<#tf(9ghyd8~SY(F_i`!{`_y*SnoA_W22tgt-Bpd+`m4SbO^W1u-jt`BEL>yq| zM{L6g1PU%xG~Pnu^-==F5{!2M0f#FFL35!G4Koi04j|#2K-Iy7Im%Tm5TOjs42+-Y z1QZ1X13`goa#4om=LP|Zz>gjS#FInw1Doz8pb+@sq72KAkvJ*}t{>difPP>bxK9$K z$Bq-Alu=};>dD_i4a->#0Zx?*2ftYl)<9N{6nE+>iX#VvLC~(87$6L#B3Uyp4+qSg z^wElqWPLbVLBeI#M(&Vagrl)v*6&9?k0E1`3u!eM8IENg4+k0ugY_8hfKfPeBRNY$ zT`R~6S`2GooDP-|f-wn5IPW^>EmSVFK(HvJc)4@*K-k8j@Nu>hfDX(gPF{{wmW%}m z?3rK@1pKo$0eU_c8uAK5EEvCA!HJkk_wwL|SIFW!m{6T(tV7vhb@qkicVpg(^s*8aQqknR3u4gWgy`yQbKQW6+uR)in0N9ZV<2tmaON+<}f@E@hm||D}W`Z zw_=EpcbI-fFOWOv9HBU-6qXwp0I0PQR~x#R6USAxoLe7ug`O9S1?-gv1~`7wpsu

R5xIi=b#|V5dW; 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 literal 0 HcmV?d00001 diff --git a/Assets/Content/Models/Platforms/Sources/checkpoint.fbx.meta b/Assets/Content/Models/Platforms/Sources/checkpoint.fbx.meta new file mode 100644 index 0000000..df39556 --- /dev/null +++ b/Assets/Content/Models/Platforms/Sources/checkpoint.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 0605a18a03830e647ab81cfa4bdfbfa4 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Content/Prefabs/Checkpoint.prefab b/Assets/Content/Prefabs/Checkpoint.prefab new file mode 100644 index 0000000..044b8b0 --- /dev/null +++ b/Assets/Content/Prefabs/Checkpoint.prefab @@ -0,0 +1,188 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &2324986646165008912 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -9178229380372946182, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalPosition.x + value: 1.787 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalPosition.y + value: 5.2187877 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalPosition.z + value: 18.23 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + propertyPath: m_Name + value: Checkpoint + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + insertIndex: -1 + addedObject: {fileID: 410636927176536248} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + insertIndex: -1 + addedObject: {fileID: 5314474917760840187} + - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + insertIndex: -1 + addedObject: {fileID: 6519834558772459323} + m_SourcePrefab: {fileID: 100100000, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} +--- !u!1 &2370127092883919082 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -9178229380372946182, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + m_PrefabInstance: {fileID: 2324986646165008912} + m_PrefabAsset: {fileID: 0} +--- !u!1 &3208087788540661569 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 0605a18a03830e647ab81cfa4bdfbfa4, type: 3} + m_PrefabInstance: {fileID: 2324986646165008912} + m_PrefabAsset: {fileID: 0} +--- !u!65 &410636927176536248 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3208087788540661569} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.4, y: 1, z: 0.4} + m_Center: {x: 0, y: 0.5, z: 0} +--- !u!114 &5314474917760840187 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3208087788540661569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6e20e5bd115065c42b0cd4c112c16203, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PlayerEvent + OnPlayerEnter: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 6519834558772459323} + m_TargetAssemblyTypeName: Checkpoint, Assembly-CSharp + m_MethodName: Activate + m_Mode: 1 + 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 + OnPlayerExit: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + 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 +--- !u!114 &6519834558772459323 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3208087788540661569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83324a7ce5cc7e64a9ff596a58bf010b, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Checkpoint + _isDefault: 0 + _onActivated: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2370127092883919082} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + 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 + _onDisable: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2370127092883919082} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + 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 diff --git a/Assets/Content/Prefabs/Checkpoint.prefab.meta b/Assets/Content/Prefabs/Checkpoint.prefab.meta new file mode 100644 index 0000000..3523170 --- /dev/null +++ b/Assets/Content/Prefabs/Checkpoint.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 14737cad78e22fa4da8f66ee1423de0f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Content/Scenes/Main.unity b/Assets/Content/Scenes/Main.unity index 184ba91..7835247 100644 --- a/Assets/Content/Scenes/Main.unity +++ b/Assets/Content/Scenes/Main.unity @@ -366,6 +366,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 0.5 TimeOffset: 0.2 Translation: {x: 0, y: 0, z: 0} @@ -650,6 +651,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 0.5 TimeOffset: 0.4 Translation: {x: 0, y: 0, z: 0} @@ -1689,6 +1691,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 1 TimeOffset: 0 Translation: {x: 0, y: 0, z: 0} @@ -1740,6 +1743,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 1 TimeOffset: 0 Translation: {x: 0, y: 3, z: 0} @@ -1948,6 +1952,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 2 TimeOffset: 0 Translation: {x: 0, y: 11, z: 0} @@ -2161,6 +2166,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 7 TimeOffset: 0 Translation: {x: 0, y: 10, z: 0} @@ -2743,6 +2749,67 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1080756049} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1081482970 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalPosition.x + value: 1.1496711 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalPosition.y + value: 1.0900003 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalPosition.z + value: -1.424969 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3208087788540661569, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_Name + value: Checkpoint_00 + objectReference: {fileID: 0} + - target: {fileID: 6519834558772459323, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: _isDefault + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} --- !u!1 &1085210505 GameObject: m_ObjectHideFlags: 0 @@ -3105,6 +3172,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 0.5 TimeOffset: 1 Translation: {x: 0, y: 0, z: 0} @@ -3382,6 +3450,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 0.5 TimeOffset: 0.6 Translation: {x: 0, y: 0, z: 0} @@ -3547,6 +3616,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 2 TimeOffset: 0 Translation: {x: 0, y: 5, z: 6} @@ -4032,6 +4102,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 0.5 TimeOffset: 0.8 Translation: {x: 0, y: 0, z: 0} @@ -5176,6 +5247,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + PlayOnAwake: 1 Duration: 0.5 TimeOffset: 0 Translation: {x: 0, y: 0, z: 0} @@ -6066,6 +6138,63 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: dfb5576e46653d9419747f6c7e441ee4, type: 3} +--- !u!1001 &3500778195936868464 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalPosition.x + value: 1.787 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalPosition.y + value: 5.2187877 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalPosition.z + value: 18.23 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2868435020841506299, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3208087788540661569, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} + propertyPath: m_Name + value: Checkpoint_01 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 14737cad78e22fa4da8f66ee1423de0f, type: 3} --- !u!1001 &5497189567890878294 PrefabInstance: m_ObjectHideFlags: 0 @@ -6088,7 +6217,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2074228021127610768, guid: f4beaf6954e188347a7c1e7e772d364e, type: 3} propertyPath: m_LocalPosition.z - value: -8.08 + value: -5.61 objectReference: {fileID: 0} - target: {fileID: 2074228021127610768, guid: f4beaf6954e188347a7c1e7e772d364e, type: 3} propertyPath: m_LocalRotation.w @@ -6360,3 +6489,5 @@ SceneRoots: - {fileID: 55113320} - {fileID: 604692791} - {fileID: 1798386216} + - {fileID: 1081482970} + - {fileID: 3500778195936868464} diff --git a/Assets/Content/Scripts/Checkpoint.cs b/Assets/Content/Scripts/Checkpoint.cs index f194b92..e2e7904 100644 --- a/Assets/Content/Scripts/Checkpoint.cs +++ b/Assets/Content/Scripts/Checkpoint.cs @@ -1,16 +1,35 @@ using UnityEngine; +using UnityEngine.Events; public class Checkpoint : MonoBehaviour { - // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() + public static Checkpoint Active { get; private set; } + + [SerializeField] private bool _isDefault; + [SerializeField] private UnityEvent _onActivated; + [SerializeField] private UnityEvent _onDisable; + + public void Activate() { - + if (Active) + Active.Disable(); + + Active = this; + _onActivated?.Invoke(); } - // Update is called once per frame - void Update() + public void Disable() { - + if (Active == this) + { + Active = null; + _onDisable?.Invoke(); + } + } + + void Awake() + { + if (_isDefault) + Activate(); } } diff --git a/Assets/Content/Scripts/Player.cs b/Assets/Content/Scripts/Player.cs index 9e625b1..64814ff 100644 --- a/Assets/Content/Scripts/Player.cs +++ b/Assets/Content/Scripts/Player.cs @@ -1,6 +1,7 @@ using UnityEngine; using UnityEngine.InputSystem; using System; +using UnityEngine.Events; ///

/// Player controller. @@ -95,8 +96,8 @@ public class Player : MonoBehaviour [Tooltip("Current health points")] public int CurrentHealth; - [Tooltip("Checkpoint for respawn")] - public Checkpoint Checkpoint; + [Tooltip("Event on definitive die")] + public UnityEvent OnDie; } [SerializeField] private Settings _settings; @@ -203,6 +204,8 @@ public class Player : MonoBehaviour _groundCheckRayOffset = cc.center + Vector3.up * (-cc.height * .5f - cc.skinWidth + _settings.GroundTolerance); _groundCheckSphereOffset = cc.center + Vector3.up * (-cc.height * .5f + cc.radius - cc.skinWidth - _settings.GroundTolerance); _groundCheckRadius = cc.radius; + + _health.CurrentHealth = _health.MaxHealth; } void OnEnable() @@ -297,16 +300,7 @@ public class Player : MonoBehaviour _state.CurrentState = PlayerState.Stunned; if (duration > 0) - Invoke(nameof(RecoverFromStun), duration); - } - - /// - /// Recover from stun. - /// - public void RecoverFromStun() - { - if (_state.CurrentState == PlayerState.Stunned) - _state.CurrentState = PlayerState.Idle; + Invoke(nameof(Recover), duration); } /// @@ -319,6 +313,43 @@ public class Player : MonoBehaviour _state.Velocity = _impulseForce = _persistentForce = _platformVelocity = Vector3.zero; _state.Ground = null; _state.CurrentState = PlayerState.Eliminated; + + Invoke(nameof(GoToCheckpoint), 2); + } + + /// + /// Recover from stun. + /// + public void GoToCheckpoint() + { + if (Checkpoint.Active && _health.CurrentHealth > 0) + { + _health.CurrentHealth--; + + transform.position = Checkpoint.Active.transform.position; + + Debug.Log("Go to last checkpoint"); + + Recover(); + } + else + { + Debug.Log("Player is dead"); + + _health.OnDie.Invoke(); + } + } + + /// + /// Recover from stun. + /// + public void Recover() + { + if (_state.CurrentState == PlayerState.Stunned || + _state.CurrentState == PlayerState.Eliminated) + _state.CurrentState = PlayerState.Idle; + + _references.Controller.enabled = true; } /// diff --git a/Assets/Content/Scripts/PlayerEvent.cs b/Assets/Content/Scripts/PlayerEvent.cs new file mode 100644 index 0000000..4f9953b --- /dev/null +++ b/Assets/Content/Scripts/PlayerEvent.cs @@ -0,0 +1,24 @@ +using UnityEngine; +using UnityEngine.Events; + +public class PlayerEvent : MonoBehaviour +{ + public UnityEvent OnPlayerEnter; + public UnityEvent OnPlayerExit; + + void OnTriggerEnter(Collider col) + { + if (Player.Instance && col.gameObject == Player.Instance.gameObject) + { + OnPlayerEnter?.Invoke(); + } + } + + void OnTriggerExit(Collider col) + { + if (Player.Instance && col.gameObject == Player.Instance.gameObject) + { + OnPlayerExit?.Invoke(); + } + } +} diff --git a/Assets/Content/Scripts/PlayerEvent.cs.meta b/Assets/Content/Scripts/PlayerEvent.cs.meta new file mode 100644 index 0000000..a55b0ca --- /dev/null +++ b/Assets/Content/Scripts/PlayerEvent.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6e20e5bd115065c42b0cd4c112c16203 \ No newline at end of file