From 8271ce523ac77fc63dd49dcefb1db9323aabfca5 Mon Sep 17 00:00:00 2001 From: Vikas Singh Date: Sat, 28 Aug 2021 16:53:16 +0530 Subject: [PATCH] Enemy Script created with Inheritance, ScipatableObjects and Finite State Machine. So we can add different types of Enemies with different behaviour with different States (move, idle, attack, jump and so on). --- .../BasicEnemyAc.controller | 111 +++++- .../Animations/Enemy/Enemy1_Idle.anim | 85 +++++ .../Animations/Enemy/Enemy1_Idle.anim.meta | 8 + .../Animations/Enemy/Enemy1_walk.anim | 34 +- .../Materials/EnemyMaterial.physicsMaterial2D | 11 + .../EnemyMaterial.physicsMaterial2D.meta | 8 + Assets/Scenes/Main.unity | 44 +-- Assets/Scripts/Enemy/EnemySpecific.meta | 8 + .../Scripts/Enemy/EnemySpecific/Enemy1.meta | 8 + .../Enemy/EnemySpecific/Enemy1/Data.meta | 8 + .../Enemy1/Data/E1_BaseData.asset | 19 ++ .../Enemy1/Data/E1_BaseData.asset.meta | 8 + .../Enemy1/Data/E1_IdleStateData.asset | 16 + .../Enemy1/Data/E1_IdleStateData.asset.meta | 8 + .../Enemy1/Data/E1_MoveStateData.asset | 15 + .../Enemy1/Data/E1_MoveStateData.asset.meta | 8 + .../EnemySpecific/Enemy1/E1_IdleState.cs | 37 ++ .../EnemySpecific/Enemy1/E1_IdleState.cs.meta | 11 + .../EnemySpecific/Enemy1/E1_MoveState.cs | 38 +++ .../EnemySpecific/Enemy1/E1_MoveState.cs.meta | 11 + .../Enemy/EnemySpecific/Enemy1/Enemy1.cs | 22 ++ .../Enemy/EnemySpecific/Enemy1/Enemy1.cs.meta | 11 + Assets/Scripts/Enemy/StateMachine.meta | 8 + Assets/Scripts/Enemy/StateMachine/Entity.cs | 72 ++++ .../Scripts/Enemy/StateMachine/Entity.cs.meta | 11 + .../Enemy/StateMachine/FiniteStateMachine.cs | 22 ++ .../StateMachine/FiniteStateMachine.cs.meta | 11 + Assets/Scripts/Enemy/StateMachine/State.cs | 43 +++ .../Scripts/Enemy/StateMachine/State.cs.meta | 11 + Assets/Scripts/Enemy/States.meta | 8 + Assets/Scripts/Enemy/States/Data.meta | 8 + Assets/Scripts/Enemy/States/Data/D_Entity.cs | 13 + .../Enemy/States/Data/D_Entity.cs.meta | 11 + .../Scripts/Enemy/States/Data/D_IdleState.cs | 12 + .../Enemy/States/Data/D_IdleState.cs.meta | 11 + .../Scripts/Enemy/States/Data/D_MoveState.cs | 12 + .../Enemy/States/Data/D_MoveState.cs.meta | 11 + Assets/Scripts/Enemy/States/IdleState.cs | 58 ++++ Assets/Scripts/Enemy/States/IdleState.cs.meta | 11 + Assets/Scripts/Enemy/States/MoveState.cs | 42 +++ Assets/Scripts/Enemy/States/MoveState.cs.meta | 11 + Assets/Sprites/Enemy/Enemy 1.2.png | Bin 6002 -> 0 bytes Assets/Sprites/Enemy/Enemy 1.png | Bin 0 -> 6807 bytes .../{Enemy 1.2.png.meta => Enemy 1.png.meta} | 320 +++++++++++------- 44 files changed, 1058 insertions(+), 177 deletions(-) create mode 100644 Assets/Animation/Animations/Enemy/Enemy1_Idle.anim create mode 100644 Assets/Animation/Animations/Enemy/Enemy1_Idle.anim.meta create mode 100644 Assets/Materials/EnemyMaterial.physicsMaterial2D create mode 100644 Assets/Materials/EnemyMaterial.physicsMaterial2D.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs.meta create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs create mode 100644 Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs.meta create mode 100644 Assets/Scripts/Enemy/StateMachine.meta create mode 100644 Assets/Scripts/Enemy/StateMachine/Entity.cs create mode 100644 Assets/Scripts/Enemy/StateMachine/Entity.cs.meta create mode 100644 Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs create mode 100644 Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs.meta create mode 100644 Assets/Scripts/Enemy/StateMachine/State.cs create mode 100644 Assets/Scripts/Enemy/StateMachine/State.cs.meta create mode 100644 Assets/Scripts/Enemy/States.meta create mode 100644 Assets/Scripts/Enemy/States/Data.meta create mode 100644 Assets/Scripts/Enemy/States/Data/D_Entity.cs create mode 100644 Assets/Scripts/Enemy/States/Data/D_Entity.cs.meta create mode 100644 Assets/Scripts/Enemy/States/Data/D_IdleState.cs create mode 100644 Assets/Scripts/Enemy/States/Data/D_IdleState.cs.meta create mode 100644 Assets/Scripts/Enemy/States/Data/D_MoveState.cs create mode 100644 Assets/Scripts/Enemy/States/Data/D_MoveState.cs.meta create mode 100644 Assets/Scripts/Enemy/States/IdleState.cs create mode 100644 Assets/Scripts/Enemy/States/IdleState.cs.meta create mode 100644 Assets/Scripts/Enemy/States/MoveState.cs create mode 100644 Assets/Scripts/Enemy/States/MoveState.cs.meta delete mode 100644 Assets/Sprites/Enemy/Enemy 1.2.png create mode 100644 Assets/Sprites/Enemy/Enemy 1.png rename Assets/Sprites/Enemy/{Enemy 1.2.png.meta => Enemy 1.png.meta} (64%) diff --git a/Assets/Animation/AnimationControllers/BasicEnemyAc.controller b/Assets/Animation/AnimationControllers/BasicEnemyAc.controller index 7aee554..06dcd2b 100644 --- a/Assets/Animation/AnimationControllers/BasicEnemyAc.controller +++ b/Assets/Animation/AnimationControllers/BasicEnemyAc.controller @@ -10,7 +10,8 @@ AnimatorState: m_Name: Enemy1_walk m_Speed: 1 m_CycleOffset: 0 - m_Transitions: [] + m_Transitions: + - {fileID: -6959489070667304808} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -26,6 +27,62 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &-6959489070667304808 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: Move + m_EventTreshold: 0 + - m_ConditionMode: 1 + m_ConditionEvent: Idle + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 8206254002601701628} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.48275864 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-3526955028126852807 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Move + m_EventTreshold: 0 + - m_ConditionMode: 2 + m_ConditionEvent: Idle + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -9190944687798816731} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.9958878 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &-620458994428194117 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -60,12 +117,18 @@ AnimatorController: m_Name: BasicEnemyAc serializedVersion: 5 m_AnimatorParameters: - - m_Name: Knockback + - m_Name: Move m_Type: 4 m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 9100000} + m_Controller: {fileID: 0} + - m_Name: Idle + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -89,8 +152,7 @@ AnimatorState: m_Name: Enemy1_Hurt m_Speed: 1 m_CycleOffset: 0 - m_Transitions: - - {fileID: 5795875195906319899} + m_Transitions: [] m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -142,18 +204,47 @@ AnimatorStateMachine: m_ChildStates: - serializedVersion: 1 m_State: {fileID: -9190944687798816731} - m_Position: {x: 240, y: 80, z: 0} + m_Position: {x: 290, y: -20, z: 0} - serializedVersion: 1 m_State: {fileID: 2331468422103063953} - m_Position: {x: 240, y: 20, z: 0} + m_Position: {x: 50, y: -20, z: 0} + - serializedVersion: 1 + m_State: {fileID: 8206254002601701628} + m_Position: {x: 290, y: 140, z: 0} m_ChildStateMachines: [] - m_AnyStateTransitions: - - {fileID: -620458994428194117} + m_AnyStateTransitions: [] m_EntryTransitions: [] m_StateMachineTransitions: {} m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 260, y: -30, z: 0} + m_AnyStatePosition: {x: 50, y: 30, z: 0} m_EntryPosition: {x: 50, y: 90, z: 0} m_ExitPosition: {x: 50, y: 140, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: -9190944687798816731} +--- !u!1102 &8206254002601701628 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Enemy1_Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -3526955028126852807} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 5d963416a087ce848be82e3a39b8fdf0, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Animation/Animations/Enemy/Enemy1_Idle.anim b/Assets/Animation/Animations/Enemy/Enemy1_Idle.anim new file mode 100644 index 0000000..b8c525b --- /dev/null +++ b/Assets/Animation/Animations/Enemy/Enemy1_Idle.anim @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Enemy1_Idle + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 6469914809321751411, guid: e77d92723044c9d4f8e8a7c82573d073, + type: 3} + - time: 0.083333336 + value: {fileID: -2540635606737711782, guid: e77d92723044c9d4f8e8a7c82573d073, + type: 3} + - time: 0.16666667 + value: {fileID: 8571016785330678217, guid: e77d92723044c9d4f8e8a7c82573d073, + type: 3} + - time: 0.25 + value: {fileID: -6999863032711394166, guid: e77d92723044c9d4f8e8a7c82573d073, + type: 3} + - time: 0.28333333 + value: {fileID: -6999863032711394166, guid: e77d92723044c9d4f8e8a7c82573d073, + type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 6469914809321751411, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: -2540635606737711782, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: 8571016785330678217, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: -6999863032711394166, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: -6999863032711394166, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.3 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animation/Animations/Enemy/Enemy1_Idle.anim.meta b/Assets/Animation/Animations/Enemy/Enemy1_Idle.anim.meta new file mode 100644 index 0000000..0a1c9d5 --- /dev/null +++ b/Assets/Animation/Animations/Enemy/Enemy1_Idle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d963416a087ce848be82e3a39b8fdf0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animation/Animations/Enemy/Enemy1_walk.anim b/Assets/Animation/Animations/Enemy/Enemy1_walk.anim index 20e4e6a..228693d 100644 --- a/Assets/Animation/Animations/Enemy/Enemy1_walk.anim +++ b/Assets/Animation/Animations/Enemy/Enemy1_walk.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Enemy1_walk + m_Name: Enemy1_Walk serializedVersion: 6 m_Legacy: 0 m_Compressed: 0 @@ -20,28 +20,28 @@ AnimationClip: m_PPtrCurves: - curve: - time: 0 - value: {fileID: 6369384564468328029, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: 7942249098920568159, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.06666667 - value: {fileID: 6138185936412383962, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: 6294125324160034484, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.13333334 - value: {fileID: -275327403722753088, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: 5845606359538220865, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.2 - value: {fileID: 850753403565259673, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: 7559897690265657476, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.26666668 - value: {fileID: 3471711084143634667, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: -4821758819355737828, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.33333334 - value: {fileID: -3991021883962996350, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: 4027105108782761397, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.4 - value: {fileID: -5760543911693439659, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: -4356277145322495249, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} - time: 0.46666667 - value: {fileID: -3974637543865793226, guid: 3bb687d3e4e625245b3d010df27f3a6d, + value: {fileID: -4536786074267818148, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} attribute: m_Sprite path: @@ -62,14 +62,14 @@ AnimationClip: customType: 23 isPPtrCurve: 1 pptrCurveMapping: - - {fileID: 6369384564468328029, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: 6138185936412383962, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: -275327403722753088, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: 850753403565259673, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: 3471711084143634667, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: -3991021883962996350, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: -5760543911693439659, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} - - {fileID: -3974637543865793226, guid: 3bb687d3e4e625245b3d010df27f3a6d, type: 3} + - {fileID: 7942249098920568159, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: 6294125324160034484, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: 5845606359538220865, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: 7559897690265657476, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: -4821758819355737828, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: 4027105108782761397, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: -4356277145322495249, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} + - {fileID: -4536786074267818148, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} diff --git a/Assets/Materials/EnemyMaterial.physicsMaterial2D b/Assets/Materials/EnemyMaterial.physicsMaterial2D new file mode 100644 index 0000000..9b050ba --- /dev/null +++ b/Assets/Materials/EnemyMaterial.physicsMaterial2D @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!62 &6200000 +PhysicsMaterial2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EnemyMaterial + friction: 0 + bounciness: 0 diff --git a/Assets/Materials/EnemyMaterial.physicsMaterial2D.meta b/Assets/Materials/EnemyMaterial.physicsMaterial2D.meta new file mode 100644 index 0000000..866c0e5 --- /dev/null +++ b/Assets/Materials/EnemyMaterial.physicsMaterial2D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a56be316809bfb04b9619281395b55bb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 6200000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index f3d0837..2cbeeef 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -26976,7 +26976,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 556279999} - m_Layer: 9 + m_Layer: 0 m_Name: WallCheck m_TagString: Untagged m_Icon: {fileID: 0} @@ -27061,7 +27061,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 892116532} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 3.18, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 2138779603} @@ -27131,7 +27131,7 @@ Rigidbody2D: m_LinearDrag: 0 m_AngularDrag: 0.05 m_GravityScale: 8 - m_Material: {fileID: 0} + m_Material: {fileID: 6200000, guid: a56be316809bfb04b9619281395b55bb, type: 2} m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 1 @@ -27175,7 +27175,7 @@ SpriteRenderer: m_SortingLayerID: -1031487247 m_SortingLayer: 4 m_SortingOrder: 0 - m_Sprite: {fileID: 6369384564468328029, guid: 3bb687d3e4e625245b3d010df27f3a6d, + m_Sprite: {fileID: 7942249098920568159, guid: e77d92723044c9d4f8e8a7c82573d073, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 @@ -35970,7 +35970,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1881142531} - - component: {fileID: 1881142532} + - component: {fileID: 1881142533} m_Layer: 0 m_Name: Enemy1 m_TagString: Untagged @@ -35993,7 +35993,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1881142532 +--- !u!114 &1881142533 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -36002,34 +36002,14 @@ MonoBehaviour: m_GameObject: {fileID: 1881142530} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a6cdb301218e5c14bbfd54d736f699ff, type: 3} + m_Script: {fileID: 11500000, guid: a1fcba6b1a5db63439c38a820a941109, type: 3} m_Name: m_EditorClassIdentifier: - groundCheck: {fileID: 2138779603} + entityData: {fileID: 11400000, guid: b722b6081dff5fc48a07f50f3b391492, type: 2} wallCheck: {fileID: 556279999} - touchDamageCheck: {fileID: 1280154865} - whatIsGround: - serializedVersion: 2 - m_Bits: 256 - whatIsPlayer: - serializedVersion: 2 - m_Bits: 2048 - groundCheckDistance: 0.5 - wallCheckDistance: 0.1 - movementSpeed: 3 - maxHealth: 30 - knockbackDuration: 0.1 - touchDamageCooldown: 0.2 - touchDamage: 10 - touchDamageWidth: 1.97 - touchDamageHeight: 0.98 - knockbackSpeed: {x: 10, y: 5} - hitParticle: {fileID: 1607698850734752776, guid: a75fed3be19fd4e43a0ae215689d76a8, - type: 3} - deathChunkParticle: {fileID: 1482411589124549042, guid: 11ab0c1767df18c47a4ecc7832d158ab, - type: 3} - deathBloodParticle: {fileID: 6973840520826084357, guid: 123a8f48fb319724799ad291fbf131c8, - type: 3} + ledgeCheck: {fileID: 2138779603} + idleStateData: {fileID: 11400000, guid: c1afee4bde01d524a8780ceb0e2942cf, type: 2} + moveStateData: {fileID: 11400000, guid: 8d3710213c08b1c4cb0429ae94a8a87a, type: 2} --- !u!1 &2086072978 GameObject: m_ObjectHideFlags: 0 @@ -36256,7 +36236,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 2138779603} - m_Layer: 9 + m_Layer: 0 m_Name: GroundCheck m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Scripts/Enemy/EnemySpecific.meta b/Assets/Scripts/Enemy/EnemySpecific.meta new file mode 100644 index 0000000..f98823d --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1de8f1dbab8eabf41aa3b7e715871aed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1.meta new file mode 100644 index 0000000..bcacdbf --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d001eeb6f74f3874ebb876483fecc815 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data.meta new file mode 100644 index 0000000..7d11a81 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7ae57f8dc35f104caf468cb80f75ba9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset new file mode 100644 index 0000000..5bff30e --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57df72b3fdb53634da7bfbc546142b09, type: 3} + m_Name: E1_BaseData + m_EditorClassIdentifier: + wallCheckDistance: 0.2 + ledgeCheckDistance: 0.45 + whatIsGround: + serializedVersion: 2 + m_Bits: 256 diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset.meta new file mode 100644 index 0000000..c9b4efa --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_BaseData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b722b6081dff5fc48a07f50f3b391492 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset new file mode 100644 index 0000000..a1cc2c1 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aaab811baedddc44f882613071bf592f, type: 3} + m_Name: E1_IdleStateData + m_EditorClassIdentifier: + minIdleTime: 1 + maxIdleTime: 2 diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset.meta new file mode 100644 index 0000000..e4bfb96 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_IdleStateData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c1afee4bde01d524a8780ceb0e2942cf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset new file mode 100644 index 0000000..265469b --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29d0f54a61c9b044fa3173897f9af062, type: 3} + m_Name: E1_MoveStateData + m_EditorClassIdentifier: + movementSpeed: 3 diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset.meta new file mode 100644 index 0000000..6ed603b --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Data/E1_MoveStateData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d3710213c08b1c4cb0429ae94a8a87a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs new file mode 100644 index 0000000..1d7ee2a --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class E1_IdleState : IdleState +{ + private Enemy1 enemy; + public E1_IdleState(Entity _entity, FiniteStateMachine _stateMachine, string _animBoolName, D_IdleState _stateData, Enemy1 _enemy) : base(_entity, _stateMachine, _animBoolName, _stateData) + { + this.enemy = _enemy; + } + + public override void Enter() + { + base.Enter(); + } + + public override void Exit() + { + base.Exit(); + } + + public override void LogicUpdate() + { + base.LogicUpdate(); + + if (isIdleTimeOver) + { + stateMachine.ChangeState(enemy.moveState); + } + } + + public override void PhysicsUpdate() + { + base.PhysicsUpdate(); + } +} diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs.meta new file mode 100644 index 0000000..a950de5 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_IdleState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 243dc99a0a87b7e438eb681f6ab90d73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs new file mode 100644 index 0000000..bb035d6 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class E1_MoveState : MoveState +{ + private Enemy1 enemy; + public E1_MoveState(Entity _entity, FiniteStateMachine _stateMachine, string _animBoolName, D_MoveState _stateData, Enemy1 _enemy) : base(_entity, _stateMachine, _animBoolName, _stateData) + { + this.enemy = _enemy; + } + + public override void Enter() + { + base.Enter(); + } + + public override void Exit() + { + base.Exit(); + } + + public override void LogicUpdate() + { + base.LogicUpdate(); + + if (!isDetectingLedge || isTouchingWall) + { + enemy.idleState.SetFlipAfterIdle(true); + stateMachine.ChangeState(enemy.idleState); + } + } + + public override void PhysicsUpdate() + { + base.PhysicsUpdate(); + } +} diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs.meta new file mode 100644 index 0000000..37b6831 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/E1_MoveState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05d7271c523296b4cb78d520c44292a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs new file mode 100644 index 0000000..586a908 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Enemy1 : Entity +{ + public E1_IdleState idleState { get; private set; } + public E1_MoveState moveState { get; private set; } + + [SerializeField] private D_IdleState idleStateData; + [SerializeField] private D_MoveState moveStateData; + + public override void Start() + { + base.Start(); + + moveState = new E1_MoveState(this, stateMachine, "Move", moveStateData, this); + idleState = new E1_IdleState(this, stateMachine, "Idle", idleStateData, this); + + stateMachine.Initialize(moveState); + } +} diff --git a/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs.meta b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs.meta new file mode 100644 index 0000000..427b808 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemySpecific/Enemy1/Enemy1.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1fcba6b1a5db63439c38a820a941109 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/StateMachine.meta b/Assets/Scripts/Enemy/StateMachine.meta new file mode 100644 index 0000000..82215be --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dafc2e0c6c27ab647b6b7a4cd2536504 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/StateMachine/Entity.cs b/Assets/Scripts/Enemy/StateMachine/Entity.cs new file mode 100644 index 0000000..0f6469d --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine/Entity.cs @@ -0,0 +1,72 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +// Entity Class is the Base Class for Enemies so all Enemies are going to Inherit Entity class + +public class Entity : MonoBehaviour +{ + public FiniteStateMachine stateMachine; + + public D_Entity entityData; + + public int facingDirection { get; private set; } + public Rigidbody2D rb { get; private set; } + public Animator anim { get; private set; } + public GameObject aliveGO { get; private set; } + + [SerializeField] private Transform wallCheck; + [SerializeField] private Transform ledgeCheck; + + private Vector2 velocityWorkspace; + + public virtual void Start() + { + facingDirection = 1; + aliveGO = transform.Find("Alive").gameObject; + rb = aliveGO.GetComponent(); + anim = aliveGO.GetComponent(); + stateMachine = new FiniteStateMachine(); + } + + public virtual void Update() + { + stateMachine.currentState.LogicUpdate(); + } + + public virtual void FixedUpdate() + { + stateMachine.currentState.PhysicsUpdate(); + } + + public virtual void SetVelocity(float _velocity) + { + velocityWorkspace.Set(_velocity * facingDirection, rb.velocity.y); + rb.velocity = velocityWorkspace; + } + + public virtual bool CheckWall() + { + return Physics2D.Raycast(wallCheck.position, aliveGO.transform.right, entityData.wallCheckDistance, entityData.whatIsGround); + } + + public virtual bool CheckLedge() + { + return Physics2D.Raycast(ledgeCheck.position, Vector2.down, entityData.ledgeCheckDistance, entityData.whatIsGround); + } + + public virtual void Flip() + { + facingDirection *= -1; + //Vector2 scale = aliveGO.transform.localScale; + //scale.x *= -1.0f; + //aliveGO.transform.localScale = scale; + aliveGO.transform.Rotate(0.0f, -180.0f, 0.0f); + } + + public virtual void OnDrawGizmos() + { + Gizmos.DrawLine(wallCheck.position, wallCheck.position + (Vector3)(Vector2.right * facingDirection * entityData.wallCheckDistance)); + Gizmos.DrawLine(ledgeCheck.position, ledgeCheck.position + (Vector3)(Vector2.down * facingDirection * entityData.ledgeCheckDistance)); + } +} diff --git a/Assets/Scripts/Enemy/StateMachine/Entity.cs.meta b/Assets/Scripts/Enemy/StateMachine/Entity.cs.meta new file mode 100644 index 0000000..a70a6d9 --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine/Entity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e39299202f543944a9f6ed30d6eb253a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs b/Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs new file mode 100644 index 0000000..1e0dc80 --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +// FiniteStateMachine class is going to keep track of what State the Enemy is currently in & run the correct code from that State. Keep track of current State. +public class FiniteStateMachine +{ + public State currentState { get; private set; } // Keep track of current state which has public getter and private setter + + public void Initialize(State _startingState) + { + currentState = _startingState; + currentState.Enter(); + } + + public void ChangeState(State _newState) + { + currentState.Exit(); + currentState = _newState; + currentState.Enter(); + } +} diff --git a/Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs.meta b/Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs.meta new file mode 100644 index 0000000..e743535 --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine/FiniteStateMachine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 650104a22a3dbdf45922f9964004652e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/StateMachine/State.cs b/Assets/Scripts/Enemy/StateMachine/State.cs new file mode 100644 index 0000000..d69c15e --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine/State.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/* State class has the every function that all the States should have so Enter, Exit, Normal Update function and Physics Update state. + * So when we create a state like Idle or Move then those are going to be inherited from State class. In our Enemy class we are going to create object of the State */ +public class State +{ + protected FiniteStateMachine stateMachine; // keep track of FiniteStateMachine that it belongs to + protected Entity entity; // keep track of which entity it belongs to + + protected float startTime; + + protected string animBoolName; + + public State(Entity _entity, FiniteStateMachine _stateMachine, string _animBoolName) // since we need to create Objects out of these States we need to create Constructor + { + this.entity = _entity; + this.stateMachine = _stateMachine; + this.animBoolName = _animBoolName; + } + + public virtual void Enter() // virtual means thats this function can be redefine in the Derived class + { + startTime = Time.time; + entity.anim.SetBool(animBoolName, true); + } + + public virtual void Exit() + { + entity.anim.SetBool(animBoolName, false); + } + + public virtual void LogicUpdate() + { + + } + + public virtual void PhysicsUpdate() + { + + } +} diff --git a/Assets/Scripts/Enemy/StateMachine/State.cs.meta b/Assets/Scripts/Enemy/StateMachine/State.cs.meta new file mode 100644 index 0000000..d31df04 --- /dev/null +++ b/Assets/Scripts/Enemy/StateMachine/State.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5f45f11a7820cc4e986237e2cdb6afc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States.meta b/Assets/Scripts/Enemy/States.meta new file mode 100644 index 0000000..99d5ccc --- /dev/null +++ b/Assets/Scripts/Enemy/States.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5837aa1820f50c44da8a9cd131d47e3a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States/Data.meta b/Assets/Scripts/Enemy/States/Data.meta new file mode 100644 index 0000000..5585e6a --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6be2f227dccaa054fbfb0749db6d5cf4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States/Data/D_Entity.cs b/Assets/Scripts/Enemy/States/Data/D_Entity.cs new file mode 100644 index 0000000..806c2be --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data/D_Entity.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "newEntityData", menuName = "Data/EntityData/BaseData")] + +public class D_Entity : ScriptableObject // we need to create Data objects in Unity & this is something ScriptableObject allows us to do +{ + public float wallCheckDistance = 0.2f; + public float ledgeCheckDistance = 0.45f; + + public LayerMask whatIsGround; +} diff --git a/Assets/Scripts/Enemy/States/Data/D_Entity.cs.meta b/Assets/Scripts/Enemy/States/Data/D_Entity.cs.meta new file mode 100644 index 0000000..3b1cb0f --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data/D_Entity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57df72b3fdb53634da7bfbc546142b09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States/Data/D_IdleState.cs b/Assets/Scripts/Enemy/States/Data/D_IdleState.cs new file mode 100644 index 0000000..f855048 --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data/D_IdleState.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "newIdleStateData", menuName = "Data/State Data/Idle State")] + + +public class D_IdleState : ScriptableObject +{ + public float minIdleTime = 0.5f; + public float maxIdleTime = 1.5f; +} diff --git a/Assets/Scripts/Enemy/States/Data/D_IdleState.cs.meta b/Assets/Scripts/Enemy/States/Data/D_IdleState.cs.meta new file mode 100644 index 0000000..93f7578 --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data/D_IdleState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aaab811baedddc44f882613071bf592f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States/Data/D_MoveState.cs b/Assets/Scripts/Enemy/States/Data/D_MoveState.cs new file mode 100644 index 0000000..da6f224 --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data/D_MoveState.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "newMoveStateData", menuName = "Data/State Data/Move State")] + + +public class D_MoveState : ScriptableObject // Scriptable object is a Data Container to save large amount of data independent of Class Intances +{ + public float movementSpeed = 3f; + +} diff --git a/Assets/Scripts/Enemy/States/Data/D_MoveState.cs.meta b/Assets/Scripts/Enemy/States/Data/D_MoveState.cs.meta new file mode 100644 index 0000000..9c558f1 --- /dev/null +++ b/Assets/Scripts/Enemy/States/Data/D_MoveState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29d0f54a61c9b044fa3173897f9af062 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States/IdleState.cs b/Assets/Scripts/Enemy/States/IdleState.cs new file mode 100644 index 0000000..db096dd --- /dev/null +++ b/Assets/Scripts/Enemy/States/IdleState.cs @@ -0,0 +1,58 @@ +using UnityEngine; + +public class IdleState : State +{ + protected D_IdleState stateData; + + protected bool flipAfterIdle; + protected bool isIdleTimeOver; + + protected float idleTime; + public IdleState(Entity _entity, FiniteStateMachine _stateMachine, string _animBoolName, D_IdleState _stateData) : base(_entity, _stateMachine, _animBoolName) + { + this.stateData = _stateData; + } + + public override void Enter() + { + base.Enter(); + entity.SetVelocity(0f); + isIdleTimeOver = false; + SetRandomIdleTime(); + } + + public override void Exit() + { + base.Exit(); + + if (flipAfterIdle) + { + entity.Flip(); + } + } + + public override void LogicUpdate() + { + base.LogicUpdate(); + + if (Time.time >= startTime + idleTime) + { + isIdleTimeOver = true; + } + } + + public override void PhysicsUpdate() + { + base.PhysicsUpdate(); + } + + public void SetFlipAfterIdle(bool _flip) // Setter for flipAfterIdle + { + flipAfterIdle = _flip; + } + + private void SetRandomIdleTime() + { + idleTime = Random.Range(stateData.minIdleTime, stateData.maxIdleTime); + } +} diff --git a/Assets/Scripts/Enemy/States/IdleState.cs.meta b/Assets/Scripts/Enemy/States/IdleState.cs.meta new file mode 100644 index 0000000..90a0a3b --- /dev/null +++ b/Assets/Scripts/Enemy/States/IdleState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93e820c7c1bd8a247a1c90e9d591e4a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Enemy/States/MoveState.cs b/Assets/Scripts/Enemy/States/MoveState.cs new file mode 100644 index 0000000..bc724d6 --- /dev/null +++ b/Assets/Scripts/Enemy/States/MoveState.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MoveState : State +{ + protected D_MoveState stateData; + + protected bool isTouchingWall; + protected bool isDetectingLedge; + public MoveState(Entity _entity, FiniteStateMachine _stateMachine, string _animBoolName, D_MoveState _stateData) : base(_entity, _stateMachine, _animBoolName) + { + this.stateData = _stateData; + } + + public override void Enter() + { + base.Enter(); + entity.SetVelocity(stateData.movementSpeed); + + isDetectingLedge = entity.CheckLedge(); + isTouchingWall = entity.CheckWall(); + } + + public override void Exit() + { + base.Exit(); + } + + public override void LogicUpdate() + { + base.LogicUpdate(); + } + + public override void PhysicsUpdate() + { + base.PhysicsUpdate(); + + isDetectingLedge = entity.CheckLedge(); + isTouchingWall = entity.CheckWall(); + } +} diff --git a/Assets/Scripts/Enemy/States/MoveState.cs.meta b/Assets/Scripts/Enemy/States/MoveState.cs.meta new file mode 100644 index 0000000..347f194 --- /dev/null +++ b/Assets/Scripts/Enemy/States/MoveState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9abc71b4ae025ab4c9df4152edb86378 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/Enemy/Enemy 1.2.png b/Assets/Sprites/Enemy/Enemy 1.2.png deleted file mode 100644 index a2b808b933627f440209a79ef71cabc0267ca3ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6002 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 MvcFhq?)C6L0bkBP3;+NC literal 0 HcmV?d00001 diff --git a/Assets/Sprites/Enemy/Enemy 1.2.png.meta b/Assets/Sprites/Enemy/Enemy 1.png.meta similarity index 64% rename from Assets/Sprites/Enemy/Enemy 1.2.png.meta rename to Assets/Sprites/Enemy/Enemy 1.png.meta index bd64e55..5c6d5cb 100644 --- a/Assets/Sprites/Enemy/Enemy 1.2.png.meta +++ b/Assets/Sprites/Enemy/Enemy 1.png.meta @@ -1,61 +1,73 @@ fileFormatVersion: 2 -guid: 3bb687d3e4e625245b3d010df27f3a6d +guid: e77d92723044c9d4f8e8a7c82573d073 TextureImporter: internalIDToNameTable: - first: - 213: 6369384564468328029 - second: Enemy 1.2_0 + 213: 7942249098920568159 + second: Enemy 1_0 - first: - 213: 6138185936412383962 - second: Enemy 1.2_1 + 213: 6294125324160034484 + second: Enemy 1_1 - first: - 213: -275327403722753088 - second: Enemy 1.2_2 + 213: 5845606359538220865 + second: Enemy 1_2 - first: - 213: 850753403565259673 - second: Enemy 1.2_3 + 213: 7559897690265657476 + second: Enemy 1_3 - first: - 213: 3471711084143634667 - second: Enemy 1.2_4 + 213: -4821758819355737828 + second: Enemy 1_4 - first: - 213: -3991021883962996350 - second: Enemy 1.2_5 + 213: 4027105108782761397 + second: Enemy 1_5 - first: - 213: -5760543911693439659 - second: Enemy 1.2_6 + 213: -4356277145322495249 + second: Enemy 1_6 - first: - 213: -3974637543865793226 - second: Enemy 1.2_7 + 213: -4536786074267818148 + second: Enemy 1_7 - first: - 213: -5594722903381117994 - second: Enemy 1.2_8 + 213: 6469914809321751411 + second: Enemy 1_8 - first: - 213: 6200630191683923526 - second: Enemy 1.2_9 + 213: -2540635606737711782 + second: Enemy 1_9 - first: - 213: -3627136891024772522 - second: Enemy 1.2_10 + 213: 8571016785330678217 + second: Enemy 1_10 - first: - 213: 8363528568878816504 - second: Enemy 1.2_11 + 213: -6999863032711394166 + second: Enemy 1_11 - first: - 213: -1198644127468891106 - second: Enemy 1.2_12 + 213: -7306169539634696901 + second: Enemy 1_12 - first: - 213: 3094342574952375879 - second: Enemy 1.2_13 + 213: -1145555792994578308 + second: Enemy 1_13 - first: - 213: 7492954755084660316 - second: Enemy 1.2_14 + 213: -5680426439555403407 + second: Enemy 1_14 - first: - 213: -2871824185258403877 - second: Enemy 1.2_15 + 213: 2624123026477953508 + second: Enemy 1_15 - first: - 213: -4890390274435696291 - second: Enemy 1.2_16 + 213: -4634043128709410468 + second: Enemy 1_16 - first: - 213: -3698650164525975811 - second: Enemy 1.2_17 + 213: -6204320956982381673 + second: Enemy 1_17 + - first: + 213: 4182601990571434440 + second: Enemy 1_18 + - first: + 213: -3033029466344800901 + second: Enemy 1_19 + - first: + 213: -4838196666909180953 + second: Enemy 1_20 + - first: + 213: 3542500663635982729 + second: Enemy 1_21 externalObjects: {} serializedVersion: 11 mipmaps: @@ -137,18 +149,6 @@ TextureImporter: overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 3 - buildTarget: Windows Store Apps - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: Android maxTextureSize: 2048 @@ -165,11 +165,11 @@ TextureImporter: serializedVersion: 2 sprites: - serializedVersion: 2 - name: Enemy 1.2_0 + name: Enemy 1_0 rect: serializedVersion: 2 x: 0 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -179,18 +179,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: d56adf2d389946850800000000000000 - internalID: 6369384564468328029 + spriteID: f55a3d2c979883e60800000000000000 + internalID: 7942249098920568159 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_1 + name: Enemy 1_1 rect: serializedVersion: 2 x: 64 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -200,18 +200,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: ada982176973f2550800000000000000 - internalID: 6138185936412383962 + spriteID: 4b6695672a9395750800000000000000 + internalID: 6294125324160034484 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_2 + name: Enemy 1_2 rect: serializedVersion: 2 x: 128 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -221,18 +221,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 0cbbc206f27dd2cf0800000000000000 - internalID: -275327403722753088 + spriteID: 14f3a0d3304cf1150800000000000000 + internalID: 5845606359538220865 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_3 + name: Enemy 1_3 rect: serializedVersion: 2 x: 192 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -242,18 +242,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 99b36fa86bb7ecb00800000000000000 - internalID: 850753403565259673 + spriteID: 480a49e25e62ae860800000000000000 + internalID: 7559897690265657476 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_4 + name: Enemy 1_4 rect: serializedVersion: 2 x: 256 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -263,18 +263,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: be8ea2d46defd2030800000000000000 - internalID: 3471711084143634667 + spriteID: c11c1bb86eba51db0800000000000000 + internalID: -4821758819355737828 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_5 + name: Enemy 1_5 rect: serializedVersion: 2 x: 320 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -284,18 +284,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 289439bedba0d98c0800000000000000 - internalID: -3991021883962996350 + spriteID: 5b5482a82c623e730800000000000000 + internalID: 4027105108782761397 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_6 + name: Enemy 1_6 rect: serializedVersion: 2 x: 384 - y: 128 + y: 192 width: 64 height: 64 alignment: 0 @@ -305,17 +305,38 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 55d297e35df6e00b0800000000000000 - internalID: -5760543911693439659 + spriteID: fe266e154056b83c0800000000000000 + internalID: -4356277145322495249 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_7 + name: Enemy 1_7 rect: serializedVersion: 2 x: 448 + y: 192 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: c57e3553a191a01c0800000000000000 + internalID: -4536786074267818148 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Enemy 1_8 + rect: + serializedVersion: 2 + x: 0 y: 128 width: 64 height: 64 @@ -326,14 +347,77 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 635c2fe563047d8c0800000000000000 - internalID: -3974637543865793226 + spriteID: 37389a07d31c9c950800000000000000 + internalID: 6469914809321751411 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_8 + name: Enemy 1_9 + rect: + serializedVersion: 2 + x: 64 + y: 128 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a5d80b46069ddbcd0800000000000000 + internalID: -2540635606737711782 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Enemy 1_10 + rect: + serializedVersion: 2 + x: 128 + y: 128 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 9c9ab85ea5e52f670800000000000000 + internalID: 8571016785330678217 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Enemy 1_11 + rect: + serializedVersion: 2 + x: 192 + y: 128 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a8c49da98ad7bde90800000000000000 + internalID: -6999863032711394166 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: Enemy 1_12 rect: serializedVersion: 2 x: 0 @@ -347,14 +431,14 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 6d3f937592d8b52b0800000000000000 - internalID: -5594722903381117994 + spriteID: b3d6b4173854b9a90800000000000000 + internalID: -7306169539634696901 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_9 + name: Enemy 1_13 rect: serializedVersion: 2 x: 64 @@ -368,14 +452,14 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 64ee1e69e401d0650800000000000000 - internalID: 6200630191683923526 + spriteID: c70da20631b2a10f0800000000000000 + internalID: -1145555792994578308 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_10 + name: Enemy 1_14 rect: serializedVersion: 2 x: 128 @@ -389,14 +473,14 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 652f0ca0732d9adc0800000000000000 - internalID: -3627136891024772522 + spriteID: 1713099df321b21b0800000000000000 + internalID: -5680426439555403407 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_11 + name: Enemy 1_15 rect: serializedVersion: 2 x: 192 @@ -410,18 +494,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 8fc5ad8ebe8311470800000000000000 - internalID: 8363528568878816504 + spriteID: 4e134284df1ca6420800000000000000 + internalID: 2624123026477953508 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_12 + name: Enemy 1_16 rect: serializedVersion: 2 - x: 0 - y: 0 + x: 256 + y: 64 width: 64 height: 64 alignment: 0 @@ -431,18 +515,18 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: e14db1a448f8d5fe0800000000000000 - internalID: -1198644127468891106 + spriteID: c519f6f935290bfb0800000000000000 + internalID: -4634043128709410468 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_13 + name: Enemy 1_17 rect: serializedVersion: 2 - x: 64 - y: 0 + x: 320 + y: 64 width: 64 height: 64 alignment: 0 @@ -452,17 +536,17 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: 74667696d2051fa20800000000000000 - internalID: 3094342574952375879 + spriteID: 793bd8626f2d5e9a0800000000000000 + internalID: -6204320956982381673 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_14 + name: Enemy 1_18 rect: serializedVersion: 2 - x: 128 + x: 0 y: 0 width: 64 height: 64 @@ -473,17 +557,17 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: c5e25ee76a25cf760800000000000000 - internalID: 7492954755084660316 + spriteID: 8c12adc99569b0a30800000000000000 + internalID: 4182601990571434440 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_15 + name: Enemy 1_19 rect: serializedVersion: 2 - x: 192 + x: 64 y: 0 width: 64 height: 64 @@ -494,17 +578,17 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: bd71c4c7e1b3528d0800000000000000 - internalID: -2871824185258403877 + spriteID: b7db93125c388e5d0800000000000000 + internalID: -3033029466344800901 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_16 + name: Enemy 1_20 rect: serializedVersion: 2 - x: 256 + x: 128 y: 0 width: 64 height: 64 @@ -515,17 +599,17 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: d593c3fa4f7d12cb0800000000000000 - internalID: -4890390274435696291 + spriteID: 7eb366be3c54bdcb0800000000000000 + internalID: -4838196666909180953 vertices: [] indices: edges: [] weights: [] - serializedVersion: 2 - name: Enemy 1.2_17 + name: Enemy 1_21 rect: serializedVersion: 2 - x: 320 + x: 192 y: 0 width: 64 height: 64 @@ -536,8 +620,8 @@ TextureImporter: physicsShape: [] tessellationDetail: 0 bones: [] - spriteID: df63dfa8541cbacc0800000000000000 - internalID: -3698650164525975811 + spriteID: 989bb98a59d792130800000000000000 + internalID: 3542500663635982729 vertices: [] indices: edges: []