Unity용 2D 근접 공격 튜토리얼
Unity 엔진은 2D 및 3D 게임을 모두 만들기 위한 광범위한 플랫폼을 제공합니다. 많은 액션 게임의 기본 요소 중 하나는 근접 공격입니다. 2D 환경에서 이러한 공격은 종종 캐릭터가 무기를 휘두르거나 펀치를 던지는 것으로 구성되며 Unity 애니메이션, 물리 및 스크립팅 도구의 조합을 사용하여 수행할 수 있습니다.
전제조건
1. 프로젝트 및 장면 설정
- 새 2D Unity 프로젝트를 만듭니다(아직 하지 않은 경우).
- 캐릭터 스프라이트를 가져오거나 만듭니다. 장면에 배치합니다.
2. 근접 공격 애니메이션 설정
- 프로젝트 창에서 마우스 오른쪽 버튼을 클릭하고 "Animator Controller"을 생성합니다. 이름을 "CharacterAnimator"로 지정하세요.
- 캐릭터를 선택하고 애니메이터를 "Animator" 구성 요소로 드래그하여 이 애니메이터를 캐릭터에 할당합니다.
- 애니메이션 창을 엽니다. 캐릭터를 선택한 상태에서 "MeleeAttack"이라는 새 애니메이션을 만듭니다.
- 단순화를 위해 이 공격이 빠른 펀치라고 가정해 보겠습니다. 이 동작을 시뮬레이션하려면 스프라이트에 애니메이션을 적용하세요.
3. 공격 히트박스 생성
- 빈 GameObject를 캐릭터의 자식으로 추가합니다. 이는 공격의 히트박스 역할을 합니다.
- a "Box Collider 2D"를 빈 GameObject에 연결합니다. 펀치를 치는 동안 캐릭터가 맞을 위치와 일치하도록 크기와 위치를 조정합니다.
- "Active" 상자를 선택 취소하여 히트박스를 비활성화합니다. 이렇게 하면 공격 애니메이션 중에만 활성화됩니다.
4. 공격 논리 스크립팅
- 새 스크립트를 만들고 이름을 "MeleeAttack"으로 지정한 다음 그 안에 아래 코드를 붙여넣습니다.
'MeleeAttack.cs'
using UnityEngine;
public class MeleeAttack : MonoBehaviour
{
private Animator animator;
private BoxCollider2D hitbox;
private void Start()
{
animator = GetComponent<Animator>();
hitbox = transform.Find("HitboxGameObjectName").GetComponent<BoxCollider2D>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // Attack on Space key press.
{
animator.SetTrigger("MeleeAttack");
Invoke("ActivateHitbox", 0.2f); // Activate hitbox after 0.2 seconds.
Invoke("DeactivateHitbox", 0.4f); // Deactivate hitbox after 0.4 seconds.
}
}
void ActivateHitbox()
{
hitbox.gameObject.SetActive(true);
}
void DeactivateHitbox()
{
hitbox.gameObject.SetActive(false);
}
}
5. 충돌 처리
- 적 게임 객체의 태그를 "Enemy"로 변경합니다.
- 새 스크립트를 만들고 이름을 "Hitbox"로 지정한 다음 그 안에 아래 코드를 붙여넣습니다.
'Hitbox.cs'
using UnityEngine;
public class Hitbox : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Enemy"))
{
// Damage or destroy the enemy.
Destroy(collision.gameObject);
}
}
}
- 히트박스 객체에 "Hitbox" 스크립트를 첨부하세요.
해결해야 할 질문:
- 애니메이션 중에 히트박스가 언제 활성화되는지 어떻게 알 수 있나요?: 히트박스는 'MeleeAttack.cs' 스크립트의 'Invoke' 함수에 의해 활성화됩니다. 공격이 착지할 프레임에 따라 타이밍을 조정할 수 있습니다.
- 히트박스가 동시에 여러 적과 충돌하면 어떻게 되나요?: 제공된 'Hitbox' 스크립트를 사용하면 히트박스와 충돌하는 "Enemy" 태그가 있는 각 적이 파괴됩니다. 피해나 기타 효과를 관리하려면 스크립트를 조정하세요.
- 공격 버튼을 스페이스 키로 변경할 수 있나요?: 예, 'MeleeAttack.cs' 스크립트에서 if ('Input.GetKeyDown(KeyCode.Space)') 줄은 스페이스 키 누름을 확인합니다.. 공격 버튼을 변경하려면 'KeyCode.Space'를 다른 'KeyCode' 값으로 바꾸세요.
결론
이 가이드는 Unity에서 2D 근접 공격을 구현하기 위한 기본 프레임워크를 제공합니다. 음향 효과 추가, 시각적 피드백, 적중 감지 로직 개선 등의 개선 사항을 통해 근접 공격 경험을 더욱 향상시킬 수 있습니다.