diff --git a/Assets/Scenes/main.unity b/Assets/Scenes/main.unity index 94e1b2c..f80eedc 100644 --- a/Assets/Scenes/main.unity +++ b/Assets/Scenes/main.unity @@ -352,7 +352,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 523621673} - m_Layer: 0 + m_Layer: 6 m_Name: Fire point m_TagString: Untagged m_Icon: {fileID: 0} @@ -555,7 +555,7 @@ GameObject: m_Component: - component: {fileID: 869793959} - component: {fileID: 869793960} - m_Layer: 0 + m_Layer: 6 m_Name: Circle m_TagString: Untagged m_Icon: {fileID: 0} @@ -646,7 +646,10 @@ GameObject: - component: {fileID: 1261447601} - component: {fileID: 1261447600} - component: {fileID: 1261447605} - m_Layer: 0 + - component: {fileID: 1261447608} + - component: {fileID: 1261447607} + - component: {fileID: 1261447606} + m_Layer: 6 m_Name: Player m_TagString: Player m_Icon: {fileID: 0} @@ -783,6 +786,47 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: mainCamera: {fileID: 519420031} +--- !u!114 &1261447606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1261447599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b46c8a98e30a405eb2d287515609ecda, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1261447607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1261447599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fa2924c6ed8486bbfa95c439bf9e421, type: 3} + m_Name: + m_EditorClassIdentifier: + character: {fileID: 1261447603} + deathBehavior: + _implementer: {fileID: 1261447606} +--- !u!114 &1261447608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1261447599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9139aea24fd54a5eb0f5fc1556478cb6, type: 3} + m_Name: + m_EditorClassIdentifier: + character: {fileID: 1261447603} + initialHealth: 100 --- !u!1 &1370658698 GameObject: m_ObjectHideFlags: 0 @@ -793,7 +837,7 @@ GameObject: m_Component: - component: {fileID: 1370658699} - component: {fileID: 1370658700} - m_Layer: 0 + m_Layer: 6 m_Name: Triangle m_TagString: Untagged m_Icon: {fileID: 0} @@ -871,6 +915,147 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1414795143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414795144} + - component: {fileID: 1414795145} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1414795144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414795143} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.21374999, y: 0.6375, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1516289535} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1414795145 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414795143} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -9095717837082945937, guid: 207ee8102dd4143d288186ef0be518ee, type: 3} + m_Color: {r: 1, g: 0.023584902, b: 0.51480997, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 2} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &1516289534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1516289535} + - component: {fileID: 1516289536} + m_Layer: 0 + m_Name: Melee Weapon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1516289535 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516289534} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.168, y: -0.498, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1414795144} + m_Father: {fileID: 2062887720} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1516289536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516289534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4ff53f671604189b15fac28115b2b70, type: 3} + m_Name: + m_EditorClassIdentifier: + character: {fileID: 2062887717} + weaponStats: + damage: 2 + attackSpeed: 1 + range: 0.1 + damageType: 0 + targetMask: + serializedVersion: 2 + m_Bits: 64 --- !u!1 &1636516554 GameObject: m_ObjectHideFlags: 0 @@ -881,7 +1066,7 @@ GameObject: m_Component: - component: {fileID: 1636516555} - component: {fileID: 1636516556} - m_Layer: 0 + m_Layer: 6 m_Name: Weapon m_TagString: Untagged m_Icon: {fileID: 0} @@ -916,7 +1101,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fd9cdb55272f45ab9c60a948a56e01f5, type: 3} m_Name: m_EditorClassIdentifier: - cooldown: 1 character: {fileID: 1261447603} weaponStats: damage: 3 @@ -938,6 +1122,9 @@ GameObject: - component: {fileID: 2062887718} - component: {fileID: 2062887717} - component: {fileID: 2062887716} + - component: {fileID: 2062887723} + - component: {fileID: 2062887722} + - component: {fileID: 2062887721} m_Layer: 0 m_Name: Test Enemy m_TagString: Enemy @@ -990,11 +1177,11 @@ Rigidbody2D: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2062887715} - m_BodyType: 0 + m_BodyType: 1 m_Simulated: 1 m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 - m_Mass: 1 + m_Mass: 60 m_LinearDamping: 0 m_AngularDamping: 0.05 m_GravityScale: 0 @@ -1069,8 +1256,50 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 401545663} + - {fileID: 1516289535} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2062887721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062887715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73900af7351645fdb19d016d621feb35, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2062887722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062887715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fa2924c6ed8486bbfa95c439bf9e421, type: 3} + m_Name: + m_EditorClassIdentifier: + character: {fileID: 2062887717} + deathBehavior: + _implementer: {fileID: 2062887721} +--- !u!114 &2062887723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062887715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9139aea24fd54a5eb0f5fc1556478cb6, type: 3} + m_Name: + m_EditorClassIdentifier: + character: {fileID: 2062887717} + initialHealth: 100 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Systems/EnemyDeathBehavior.cs b/Assets/Scripts/Systems/EnemyDeathBehavior.cs new file mode 100644 index 0000000..eefd192 --- /dev/null +++ b/Assets/Scripts/Systems/EnemyDeathBehavior.cs @@ -0,0 +1,15 @@ +using Interfaces; +using UnityEngine; + +namespace Systems +{ + public class EnemyDeathBehavior : MonoBehaviour, IDeathBehavior + { + public void Die() + { + Destroy(gameObject); + // later let's add particle effects, sound effects, etc. + // and give player experience points + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Systems/EnemyDeathBehavior.cs.meta b/Assets/Scripts/Systems/EnemyDeathBehavior.cs.meta new file mode 100644 index 0000000..17d0e40 --- /dev/null +++ b/Assets/Scripts/Systems/EnemyDeathBehavior.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 73900af7351645fdb19d016d621feb35 +timeCreated: 1752264813 \ No newline at end of file diff --git a/Assets/Scripts/Weapons/MeleeAttack.cs b/Assets/Scripts/Weapons/MeleeAttack.cs index 1c9b39d..1a15509 100644 --- a/Assets/Scripts/Weapons/MeleeAttack.cs +++ b/Assets/Scripts/Weapons/MeleeAttack.cs @@ -20,8 +20,14 @@ namespace Weapons if (hit.gameObject == character.gameObject) continue; var damage = GetFinalDamage(); - health.TakeDamage(damage); + health?.TakeDamage(damage); } } + + private void OnDrawGizmosSelected() + { + Gizmos.color = Color.red; + Gizmos.DrawWireSphere(transform.position, GetFinalRange()); + } } } \ No newline at end of file diff --git a/Assets/Scripts/Weapons/Weapon.cs b/Assets/Scripts/Weapons/Weapon.cs index 43beb58..063d842 100644 --- a/Assets/Scripts/Weapons/Weapon.cs +++ b/Assets/Scripts/Weapons/Weapon.cs @@ -11,7 +11,6 @@ namespace Weapons { private float timer; - [SerializeField] private float cooldown = 1f; [SerializeField] protected Character character; [OdinSerialize, InlineProperty] public WeaponStats weaponStats = new();