diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 75386b6ac61ec54f45ee08c879b5ca1065adff12..4c19e5e8343a76f955090776877c98da680d2605 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -323,6 +323,111 @@ Transform: - {fileID: 2127634081} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &315870489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315870490} + - component: {fileID: 315870493} + - component: {fileID: 315870492} + - component: {fileID: 315870491} + m_Layer: 0 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &315870490 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315870489} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1628232501} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &315870491 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315870489} + 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: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &315870492 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315870489} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 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 &315870493 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315870489} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &484130344 GameObject: m_ObjectHideFlags: 0 @@ -353,7 +458,6 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1374546119} - {fileID: 117855957} - {fileID: 542408818} m_Father: {fileID: 239523007} @@ -420,6 +524,139 @@ Transform: m_CorrespondingSourceObject: {fileID: 42222099870390294, guid: 390863d613c9cc344aa16e3796881ed1, type: 3} m_PrefabInstance: {fileID: 2621625618582748302} m_PrefabAsset: {fileID: 0} +--- !u!1 &576314395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 576314396} + - component: {fileID: 576314399} + - component: {fileID: 576314398} + - component: {fileID: 576314397} + - component: {fileID: 576314400} + m_Layer: 0 + m_Name: Marker + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &576314396 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 576314395} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.08, y: 2, z: 3.57} + m_LocalScale: {x: 1, y: 4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1098815287} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &576314397 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 576314395} + 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: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &576314398 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 576314395} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 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 &576314399 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 576314395} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &576314400 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 576314395} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, 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: 1 + m_ImplicitTensor: 1 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 126 + m_CollisionDetection: 0 --- !u!1 &675919034 GameObject: m_ObjectHideFlags: 0 @@ -726,9 +963,143 @@ Transform: m_LocalPosition: {x: 0, y: -0.125, z: 0} m_LocalScale: {x: 100, y: 0.25, z: 100} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 779633712} m_Father: {fileID: 1098815287} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &779633711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 779633712} + - component: {fileID: 779633716} + - component: {fileID: 779633715} + - component: {fileID: 779633714} + - component: {fileID: 779633713} + m_Layer: 0 + m_Name: UnderFloor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &779633712 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779633711} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 770593023} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &779633713 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779633711} + serializedVersion: 4 + m_Mass: 0.0000001 + m_Drag: 0 + m_AngularDrag: 0 + m_CenterOfMass: {x: 0, y: 0, 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: 1 + m_ImplicitTensor: 1 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 126 + m_CollisionDetection: 0 +--- !u!65 &779633714 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779633711} + 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: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &779633715 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779633711} + 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_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 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 &779633716 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779633711} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &963194225 GameObject: m_ObjectHideFlags: 0 @@ -741,7 +1112,6 @@ GameObject: - component: {fileID: 963194227} - component: {fileID: 963194226} - component: {fileID: 963194229} - - component: {fileID: 963194230} m_Layer: 0 m_Name: MainCamera m_TagString: Untagged @@ -836,30 +1206,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: target: {fileID: 117855957} - followingTime: 0.2 + followingTime: 0.1 mouseSensitivity: 2 - mouseTurn: {x: 0, y: 0} ---- !u!65 &963194230 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 963194225} - 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: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} --- !u!4 &1093326602 stripped Transform: m_CorrespondingSourceObject: {fileID: 8728181779748450929, guid: 1a7698227caac3d429dceb8aa5056502, type: 3} @@ -897,6 +1245,8 @@ Transform: m_Children: - {fileID: 705507995} - {fileID: 770593023} + - {fileID: 576314396} + - {fileID: 1628232501} m_Father: {fileID: 239523007} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1098815288 @@ -911,7 +1261,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c54dc993f0d1e36499ea37e182a87cbc, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &1374546118 +--- !u!1 &1628232500 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -919,39 +1269,39 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1374546119} - - component: {fileID: 1374546122} - - component: {fileID: 1374546121} - - component: {fileID: 1374546120} - m_Layer: 7 - m_Name: Marker + - component: {fileID: 1628232501} + - component: {fileID: 1628232503} + - component: {fileID: 1628232502} + m_Layer: 12 + m_Name: TestInteractable m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1374546119 +--- !u!4 &1628232501 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1374546118} + m_GameObject: {fileID: 1628232500} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 5, y: 2.5, z: 5} - m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 484130345} + m_Children: + - {fileID: 315870490} + m_Father: {fileID: 1098815287} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &1374546120 +--- !u!65 &1628232502 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1374546118} + m_GameObject: {fileID: 1628232500} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 @@ -960,62 +1310,24 @@ BoxCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1374546121 -MeshRenderer: + m_Center: {x: -1, y: 0.5, z: 0} +--- !u!114 &1628232503 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1374546118} + m_GameObject: {fileID: 1628232500} 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_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, 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: 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 &1374546122 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1374546118} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: afc0fd7c16afe4a42a82353df9b3a73b, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &2127634080 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Core/Entities/Mobs/Dummy/DummyAnimationController.cs b/Assets/Scripts/Core/Entities/Mobs/Dummy/DummyAnimationController.cs index 5b9556c9eff16e61d41cda5a308e8847fb2eb645..2d47baaafca9453bf465a185297f8fa2fe0dda87 100644 --- a/Assets/Scripts/Core/Entities/Mobs/Dummy/DummyAnimationController.cs +++ b/Assets/Scripts/Core/Entities/Mobs/Dummy/DummyAnimationController.cs @@ -8,12 +8,8 @@ public class DummyAnimationController : AnimationController{ private readonly Dummy dummy; // Constructor - public DummyAnimationController(Dummy dummy){ + public DummyAnimationController(Dummy dummy) : base(dummy) { this.dummy = dummy; - model = dummy.transform.Find("Model"); - animator = model.GetComponent<Animator>(); - meshRenderer = model.GetComponent<MeshRenderer>(); - dummy.OnDamagedEvent += IndicateDamaged; dummy.stateController.OnDamageDelayOverEvent += IndicateUnamaged; } diff --git a/Assets/Scripts/Core/Game/Data/GameInput.cs b/Assets/Scripts/Core/Game/Data/GameInput.cs index 37ac6ace1595d500826f7faaeb270761820e3662..1bb69dd5f1ca1450177d03a8580b4421377703d2 100644 --- a/Assets/Scripts/Core/Game/Data/GameInput.cs +++ b/Assets/Scripts/Core/Game/Data/GameInput.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; public class GameInput : MonoBehaviour { @@ -5,10 +6,10 @@ public class GameInput : MonoBehaviour { public static GameInput instance; // Attributes - public KeyCode backButton = KeyCode.Escape; - public KeyCode attackButton = KeyCode.Z; - public KeyCode attackAlternateButton = KeyCode.X; - public KeyCode interactButton = KeyCode.C; + [NonSerialized] public KeyCode backButton = KeyCode.Escape; + [NonSerialized] public KeyCode attackButton = KeyCode.Z; + [NonSerialized] public KeyCode attackAlternateButton = KeyCode.X; + [NonSerialized] public KeyCode interactButton = KeyCode.C; // Constructor protected void Awake(){ diff --git a/Assets/Scripts/Core/Objects/Interactables.meta b/Assets/Scripts/Core/Objects/Interactables.meta new file mode 100644 index 0000000000000000000000000000000000000000..e71038f68061d8a22f30c62ef49b9d8c4034d106 --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6c1c6289ba0f0841bba1d13d1473858 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Objects/Interactables/InteractableObject.cs b/Assets/Scripts/Core/Objects/Interactables/InteractableObject.cs new file mode 100644 index 0000000000000000000000000000000000000000..cbd1d37f8d6b6ff2113f2f22d134f8f1a0ea39d2 --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/InteractableObject.cs @@ -0,0 +1,19 @@ +using System; +using UnityEngine; + +public abstract class InteractableObject : MonoBehaviour, IInteractable{ + // Attributes + public event Action OnInteractAreaExitEvent; + public event Action OnInteractAreaEnterEvent; + + // Function + public abstract void Interact(); + + public void InvokeOnInteractAreaEnterEvent(){ + OnInteractAreaEnterEvent?.Invoke(); + } + + public void InvokeOnInteractAreaExitEvent(){ + OnInteractAreaExitEvent?.Invoke(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Objects/Interactables/InteractableObject.cs.meta b/Assets/Scripts/Core/Objects/Interactables/InteractableObject.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c0f4bcafd8f900e717e6a3fd29475c80dc1fa8af --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/InteractableObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 781ad64a453c24349bdd28bc5764d18d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Objects/Interactables/TestInteractable.meta b/Assets/Scripts/Core/Objects/Interactables/TestInteractable.meta new file mode 100644 index 0000000000000000000000000000000000000000..3bbaa042e745a0261d3afc013d32805ff533e79a --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/TestInteractable.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0366eb0d236cb3344a509e8d4ac8decf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractable.cs b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractable.cs new file mode 100644 index 0000000000000000000000000000000000000000..fb7f9c47602f95ebdd541eff6638c0b493a8949e --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractable.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +public class TestInteractable : InteractableObject { + // Attributes + private TestInteractableAnimationController animationController; + + // Constructor + protected void Start(){ + animationController = new TestInteractableAnimationController(this); + } + + // Function + public override void Interact(){ + Debug.Log("Test Interactable interacted"); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractable.cs.meta b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..9695c8edf1f5f5c70613026f5d5c419fd4834cb5 --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afc0fd7c16afe4a42a82353df9b3a73b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractableAnimationController.cs b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractableAnimationController.cs new file mode 100644 index 0000000000000000000000000000000000000000..be1a8021de3a9f8ea7be2b73dc3d1d3709cb058b --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractableAnimationController.cs @@ -0,0 +1,25 @@ + +using UnityEngine; + +public class TestInteractableAnimationController : AnimationController{ + // Attributes + private readonly TestInteractable testInteractable; + + // Constructor + public TestInteractableAnimationController(TestInteractable testInteractable) : base(testInteractable) { + this.testInteractable = testInteractable; + testInteractable.OnInteractAreaEnterEvent += IndicateInteractable; + testInteractable.OnInteractAreaExitEvent += IndicateUninteractable; + } + + // Functions + private void IndicateInteractable(){ + Debug.Log("Test Interactable is interactable now"); + meshRenderer.material.color = Color.yellow; + } + + private void IndicateUninteractable(){ + Debug.Log("Test Interactable is uninteractable now"); + meshRenderer.material.color = Color.white; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractableAnimationController.cs.meta b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractableAnimationController.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..22d02383cda1f902b2560f6292121b99c31e0f96 --- /dev/null +++ b/Assets/Scripts/Core/Objects/Interactables/TestInteractable/TestInteractableAnimationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf936058791cb07489b259780ebf9c8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/Player/Player.cs b/Assets/Scripts/Core/Player/Player.cs index 36a2053474903119b531f746aa6b564d5cb4ace0..44c47ea373233f058fb038706f5b982da33ea963 100644 --- a/Assets/Scripts/Core/Player/Player.cs +++ b/Assets/Scripts/Core/Player/Player.cs @@ -30,17 +30,31 @@ public class Player : PlayerEntity { } // Functions - new void Update(){ + protected new void Update(){ base.Update(); inputController.HandleInputs(); } - new void FixedUpdate(){ + protected new void FixedUpdate(){ base.FixedUpdate(); movementController.HandleMovement(); stateController.UpdateState(); } + + protected void OnTriggerEnter(Collider otherCollider){ + otherCollider.transform.TryGetComponent<IInteractable>(out var interactable); + if(interactable == null) return; + interactable.InvokeOnInteractAreaEnterEvent(); + stateController.currentInteractables.Add(interactable); + } + + protected void OnTriggerExit(Collider otherCollider){ + otherCollider.transform.TryGetComponent<IInteractable>(out var interactable); + if(interactable == null) return; + interactable.InvokeOnInteractAreaExitEvent(); + stateController.currentInteractables.Remove(interactable); + } } diff --git a/Assets/Scripts/Core/Player/PlayerAnimationController.cs b/Assets/Scripts/Core/Player/PlayerAnimationController.cs index aefafe9b004474ab9b321f9bec2778c22410a5e2..d1ff9f092fb2ba42b3f7b2a8b2f6e89a84c66329 100644 --- a/Assets/Scripts/Core/Player/PlayerAnimationController.cs +++ b/Assets/Scripts/Core/Player/PlayerAnimationController.cs @@ -11,12 +11,8 @@ public class PlayerAnimationController : AnimationController{ private readonly PlayerStateController playerStateController; // Constructor - public PlayerAnimationController(Player player){ + public PlayerAnimationController(Player player) : base(player) { this.player = player; - model = player.transform.Find("Model"); - animator = model.GetComponent<Animator>(); - meshRenderer = model.GetComponent<MeshRenderer>(); - player.stateController.OnStateChangeEvent += AnimateStates; } diff --git a/Assets/Scripts/Core/Player/PlayerInputController.cs b/Assets/Scripts/Core/Player/PlayerInputController.cs index 85e9ba176918365e5d7ace6a34204936acf9562b..4ebfcfcc8fe0c18ef574044eec67615eed409bf3 100644 --- a/Assets/Scripts/Core/Player/PlayerInputController.cs +++ b/Assets/Scripts/Core/Player/PlayerInputController.cs @@ -18,18 +18,21 @@ public class PlayerInputController{ movementInputZ = Input.GetAxisRaw("Vertical"); if(Input.GetKeyDown(GameInput.instance.attackButton)){ + Debug.Log("Player is Attacking"); if(player.Weapon == null) return; player.Weapon.Attack(); } else if(Input.GetKeyDown(GameInput.instance.attackAlternateButton)){ + Debug.Log("Player is Attacking (alternate)"); if(player.Weapon == null) return; player.Weapon.AttackAlternate(); } else if(Input.GetKeyDown(GameInput.instance.interactButton)){ - ObjectManager.instance.LogObjects(); - EntityManager.instance.LogObjects(); + Debug.Log("Player is interacting"); + IInteractable interactable = player.stateController.currentInteractables[player.stateController.currentInteractables.Count - 1]; + interactable.Interact(); } } } \ No newline at end of file diff --git a/Assets/Scripts/Core/Player/PlayerStateController.cs b/Assets/Scripts/Core/Player/PlayerStateController.cs index c61b876498159c50e62afcce0f06ae4939875a37..60cec8c2be7d7aa0da5923622e4214b484441ae5 100644 --- a/Assets/Scripts/Core/Player/PlayerStateController.cs +++ b/Assets/Scripts/Core/Player/PlayerStateController.cs @@ -1,8 +1,10 @@ +using System.Collections.Generic; using UnityEngine; public class PlayerStateController : DamageableEntityStateController { // Attributes private readonly Player player; + public List<IInteractable> currentInteractables = new(); // Contstructor public PlayerStateController(Player player) : base(player){ diff --git a/Assets/Scripts/Library/BaseClasses/Controller/AnimationController.cs b/Assets/Scripts/Library/BaseClasses/Controller/AnimationController.cs index 78afaaf40fe2f2d97d94c6d3c511a300bc6d4952..cb89f776155f632cbecda63c81a644ac1f8834d0 100644 --- a/Assets/Scripts/Library/BaseClasses/Controller/AnimationController.cs +++ b/Assets/Scripts/Library/BaseClasses/Controller/AnimationController.cs @@ -5,4 +5,10 @@ public abstract class AnimationController { public Transform model; public MeshRenderer meshRenderer; public Animator animator; + + public AnimationController(MonoBehaviour dummy){ + model = dummy.transform.Find("Model"); + animator = model.GetComponent<Animator>(); + meshRenderer = model.GetComponent<MeshRenderer>(); + } } \ No newline at end of file diff --git a/Assets/Scripts/Library/Interfaces/IInteractable.cs b/Assets/Scripts/Library/Interfaces/IInteractable.cs new file mode 100644 index 0000000000000000000000000000000000000000..60759163a6541e313e1936d517530912034370df --- /dev/null +++ b/Assets/Scripts/Library/Interfaces/IInteractable.cs @@ -0,0 +1,9 @@ +using System; + +public interface IInteractable{ + public void Interact(); + public event Action OnInteractAreaExitEvent; + public event Action OnInteractAreaEnterEvent; + public void InvokeOnInteractAreaExitEvent(); + public void InvokeOnInteractAreaEnterEvent(); +} \ No newline at end of file diff --git a/Assets/Scripts/Library/Interfaces/IInteractable.cs.meta b/Assets/Scripts/Library/Interfaces/IInteractable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a379d571989e901bb8e914f723c6fa1b79e0261c --- /dev/null +++ b/Assets/Scripts/Library/Interfaces/IInteractable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6dbba419075ee6045a2d4646d6865d36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index 818c73dd4c8bed7e3227fc6014516f57769ca8ac..437784137bbfe478fd066e797eb10226a0983231 100644 --- a/ProjectSettings/DynamicsManager.asset +++ b/ProjectSettings/DynamicsManager.asset @@ -18,7 +18,7 @@ PhysicsManager: m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 - m_LayerCollisionMatrix: fffffffffff0fffffff0fffffff8fffffff0fffffff0fffffffefffffff5ffff81f0ffff41f0ffffc1f0ffff49f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_LayerCollisionMatrix: ffefffffffe0ffffffe0ffffffe0ffffffe0ffffffe0fffffffeffffffe5ffff81e0ffff41e0ffffc1e0ffff41e0ffff40e0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_SimulationMode: 0 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 1 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 6cd419fc84e3ae26d9bc9c118724de2bc2a58f0c..5033ce2f3782dc8c3b7218b7b2a8773658dd7a65 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -20,7 +20,7 @@ TagManager: - EnemyAttack - EnvironmentAttack - Collectible - - + - Interactable - - -