From 6eb081104fb6f496c50cd13f658cd1b341537579 Mon Sep 17 00:00:00 2001 From: Mingu Kim Date: Sun, 24 Aug 2025 20:33:08 +0900 Subject: [PATCH] =?UTF-8?q?PlayerAttack=20=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EB=AA=AC=EC=8A=A4=ED=84=B0=20=ED=94=BC?= =?UTF-8?q?=EA=B2=A9=20=EC=8B=9C=20=EB=B0=98=ED=88=AC=EB=AA=85=20=ED=9A=A8?= =?UTF-8?q?=EA=B3=BC=20=EC=B6=94=EA=B0=80(=EC=9E=84=EC=8B=9C)=20=EB=AA=AC?= =?UTF-8?q?=EC=8A=A4=ED=84=B0=20=EC=B2=B4=EB=A0=A5=200=EC=9D=BC=EB=95=8C?= =?UTF-8?q?=20=EB=94=94=EC=8A=A4=ED=8A=B8=EB=A1=9C=EC=9D=B4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/SampleScene.unity | 4 ++- Assets/Scripts/Enemies/EnemyMove.cs | 42 +++++++++++++++++++++++++++++ ProjectSettings/TagManager.asset | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 5e0774a1..2bf73222 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -166,6 +166,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0de3500b3118bd04ebf644b811d74319, type: 3} m_Name: m_EditorClassIdentifier: + hp: 3 --- !u!50 &48873539 Rigidbody2D: serializedVersion: 5 @@ -5804,6 +5805,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0de3500b3118bd04ebf644b811d74319, type: 3} m_Name: m_EditorClassIdentifier: + hp: 3 --- !u!1 &1991645574 GameObject: m_ObjectHideFlags: 0 @@ -5989,7 +5991,7 @@ GameObject: - component: {fileID: 2119498365} - component: {fileID: 2119498366} - component: {fileID: 2119498367} - m_Layer: 10 + m_Layer: 12 m_Name: AttackArea m_TagString: Player m_Icon: {fileID: 0} diff --git a/Assets/Scripts/Enemies/EnemyMove.cs b/Assets/Scripts/Enemies/EnemyMove.cs index df66e8b6..aa8e0822 100644 --- a/Assets/Scripts/Enemies/EnemyMove.cs +++ b/Assets/Scripts/Enemies/EnemyMove.cs @@ -3,14 +3,56 @@ using UnityEngine; public class EnemyMove : MonoBehaviour { Rigidbody2D _rigidbody; + SpriteRenderer _spriteRenderer; + + // 변수 + [SerializeField] + public int hp = 3; void Awake() { _rigidbody = GetComponent(); + _spriteRenderer = GetComponentInChildren(); // 자식 오브젝트에 스프라이트 랜더러를 불러올때는 InChildren 사용 } private void FixedUpdate() { _rigidbody.linearVelocity = new Vector2(-1, _rigidbody.linearVelocityX); } + + // 공격 판정 콜라이더에 닿았을 때 호출 + void OnTriggerEnter2D(Collider2D other) + { + if (other.gameObject.layer == LayerMask.NameToLayer("PlayerAttack")) + { + OnDamaged(other.transform.position); + } + } + + // 데미지 처리 메서드 + public void OnDamaged(Vector2 playerPosition) + { + hp--; // 체력 감소 + + // 피격 시 잠시 정지 + _rigidbody.linearVelocity = Vector2.zero; + + // 반투명 효과 적용 + _spriteRenderer.color = new Color(1, 1, 1, 0.5f); + + // 일정 시간 후 원래 색상으로 돌아오는 Invoke 호출 + Invoke("OffDamaged", 1f); + + // 체력이 0 이하가 되면 파괴 + if (hp <= 0) + { + Destroy(gameObject); + } + } + + // 반투명 효과를 없애고 원래 색상으로 되돌리는 메서드 + void OffDamaged() + { + _spriteRenderer.color = new Color(1, 1, 1, 1f); + } } diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 8d08a1f8..4b90b3ef 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -19,7 +19,7 @@ TagManager: - Enemy - Player - PlayerDamaged - - + - PlayerAttack - - -