목록2026/04/09 (4)
MOONSUN
이전 글에서는 아래 내용까지 정리했었다. 콜리전 / 트레이스 채널 설정AnimNotify 기반 공격 타이밍 제어Debug Drawing으로 공격 범위 시각화 이제 마지막으로,공격이 맞았을 때 실제로 데미지를 적용하고, 캐릭터를 죽이는 처리를 해보자. 1. TakeDamage()의 위치와 역할AActor::TakeDamage()는 엔진에서 제공하는 “공통 데미지 진입점”이다. 1-1. 언리얼 기본 데미지 흐름UGameplayStatics::ApplyDamage(...) ↓AActor::TakeDamage(...) ↓OnTakeAnyDamage Delegate / BP 이벤트 즉, 어디서 공격을 하든, 결국 TakeDamage()로 모이게 되는 구조 이 구조를 쓰는 이..
이전 글에서는 아래 내용까지 정리했었다.콜리전 채널 + 트레이스 채널 세팅AnimNotify + Delegate 기반 공격 타이밍 제어 이제 공격 판정이 실제로 들어가는 순간,내가 의도한 위치와 범위로 Sweep이 실행되고 있는지 눈으로 확인해볼 차례다. SweepSingleByChannel() 이 검사한 범위를 화면에 직접 그려서공격 판정의 시작점, 끝점, 방향, 크기를 즉시 확인하는 방식을 구현해보자. 1. DrawDebugHelpers.h 추가#include "DrawDebugHelpers.h" 이걸 추가하면 다음 함수들을 사용할 수 있다:DrawDebugLineDrawDebugSphereDrawDebugCapsule 2. 공격 범위를 캡슐로 시각화 우리가 사용하는 공격 판정SweepSingle..
지난 글에서는 콜리전 채널 + 트레이스 채널 설정을 통해 공격 판정이 들어갈 수 있는 기반을 만들어 봤었다. 이번에는 그 다음으로, “언제 공격 판정을 실행할 것인가?” 를 애니메이션과 연결해보자. 근접 액션 게임에서는 공격 버튼을 눌렀다고 해서 즉시 데미지를 주는 것이 아니라,보통 무기가 실제로 휘둘러지는 프레임에 맞춰 타격 판정이 들어가야 한다. 이 타이밍 제어를 위해 대표적으로 아래 조합을 사용한다.AnimNotifyAnimInstance Delegate 캐릭터 로직 분리 1. 왜 AnimNotify + Delegate 방식이 필요할까? 처음 공격 시스템을 만들 때는 애니메이션 블루프린트나 AnimInstance 안에서 직접 공격 판정까지 처리하는 방식으로 구현한다. 하지만 이 구조는 금방 ..
물리 판정 구현을 통해 아래 영상과 같은 결과물을 제작해보자. https://youtu.be/lOaKe_7J_kA 1. 콜리전(Collision) 생성 방법언리얼에서 콜리전은 크게 3가지 방식으로 만든다. 스태틱 메시 콜리전 : 스태틱메시 에셋 자체에 콜리전 영역을 심는 방법.관리가 편하지만 동적인 제어가 어려운 단점 Primitive 컴포넌트 (Box / Capsule / Sphere) 구체, 박스, 캡슐 등의 기본 도형을 사용해 스태틱 메시와 별도로 충돌 영역을 지정한다.공격 판정과 스켈레탈 메시를 움직일 때 주로 사용피직스 애셋(Physics Asset) 스켈레탈 메시 전용일반적으로 캐릭터의 이동은 캡슐 컴포넌트를 사용해 처리하지만 특정 상황에서 캐릭터의 각 관절이 흐느적거리는 헝겊 인형(R..
