From 9ecc66aea1c50dcacfbf3d73e9bfe430eb2e5bc6 Mon Sep 17 00:00:00 2001 From: sega Date: Tue, 31 Mar 2026 13:27:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D1=8B=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= =?UTF-8?q?=20Damager=20=D0=B8=20Hitbox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Gameplay/Core.meta | 8 +++++ Assets/Scripts/Gameplay/Core/Damager.cs | 32 ++++++++++++++++++++ Assets/Scripts/Gameplay/Core/Damager.cs.meta | 2 ++ Assets/Scripts/Gameplay/Core/Hitbox.cs | 11 +++++++ Assets/Scripts/Gameplay/Core/Hitbox.cs.meta | 2 ++ 5 files changed, 55 insertions(+) create mode 100644 Assets/Scripts/Gameplay/Core.meta create mode 100644 Assets/Scripts/Gameplay/Core/Damager.cs create mode 100644 Assets/Scripts/Gameplay/Core/Damager.cs.meta create mode 100644 Assets/Scripts/Gameplay/Core/Hitbox.cs create mode 100644 Assets/Scripts/Gameplay/Core/Hitbox.cs.meta diff --git a/Assets/Scripts/Gameplay/Core.meta b/Assets/Scripts/Gameplay/Core.meta new file mode 100644 index 0000000..0b8e735 --- /dev/null +++ b/Assets/Scripts/Gameplay/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 14fb34962344db448b981ce94efdde4d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Gameplay/Core/Damager.cs b/Assets/Scripts/Gameplay/Core/Damager.cs new file mode 100644 index 0000000..14a25c0 --- /dev/null +++ b/Assets/Scripts/Gameplay/Core/Damager.cs @@ -0,0 +1,32 @@ +using UnityEngine; +using UnityEngine.Events; + +[RequireComponent (typeof(Collider))] +public class Damager : MonoBehaviour +{ + [SerializeField] private int Damage; + private GameObject Owner; + + public UnityEvent OnCollision; + + public void Initialize(GameObject Owner) + { + if (OnCollision == null) OnCollision = new(); + + this.Owner = Owner; + } + + + private void OnTriggerEnter(Collider other) + { + if(other.TryGetComponent(out var hitbox)) + { + //Коллизия с собой + if (hitbox.Owner == this.Owner) return; + + hitbox.TakeDamage(Damage); + } + + OnCollision?.Invoke(); + } +} diff --git a/Assets/Scripts/Gameplay/Core/Damager.cs.meta b/Assets/Scripts/Gameplay/Core/Damager.cs.meta new file mode 100644 index 0000000..021e6d7 --- /dev/null +++ b/Assets/Scripts/Gameplay/Core/Damager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2b9c4414025683b40ace934a0c1be3f5 \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Core/Hitbox.cs b/Assets/Scripts/Gameplay/Core/Hitbox.cs new file mode 100644 index 0000000..2a65c44 --- /dev/null +++ b/Assets/Scripts/Gameplay/Core/Hitbox.cs @@ -0,0 +1,11 @@ +using System; +using UnityEngine; + +[RequireComponent (typeof(Collider))] +public class Hitbox : MonoBehaviour +{ + public GameObject Owner { get; private set; } + public event Action OnDamage; + public void Initialize(GameObject Owner) => this.Owner = Owner; + public void TakeDamage(int damage) => OnDamage?.Invoke(damage); +} diff --git a/Assets/Scripts/Gameplay/Core/Hitbox.cs.meta b/Assets/Scripts/Gameplay/Core/Hitbox.cs.meta new file mode 100644 index 0000000..9b60f3b --- /dev/null +++ b/Assets/Scripts/Gameplay/Core/Hitbox.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fc7a89df164d2684b9953c773b371384 \ No newline at end of file