게임 개발 · 기술 동향미로의 개발노트
카테고리

SampleProjectForUnity

공통 전투 프레임워크·무기 전환·검 뽑기와 Unity Behavior AI 구현

개발 기록 · 블로그 공개

원본 기록 상태 완료

기존 Splash→Playground↔CharacterStage 흐름에 공통 전투와 실제 Behavior AI를 연결하고, 번들·물리·UI 회귀를 검증했습니다.

Unity Behavior 상대의 근접 공격과 플레이어 HP70 — 실제 게임 캡처
Unity Behavior 상대의 근접 공격과 플레이어 HP70 — 실제 게임 캡처

작업 결과

검·총 교체, 검 뽑기/수납 애니메이션, 근접·원거리 공통 공격, 체력·사망·재시작, 실제 Unity Behavior 교전과 CharacterStage 장비 선택을 구현했습니다. 기존 SceneControlManager와 UIManager, 기존 Scenes·SampleScene 분류를 재사용했습니다. 새 전투 매니저는 추가하지 않았습니다. 자체 C#은95→93개, Runtime은87→84개로 줄었고 새 매니저는0개입니다.

사용 흐름과 조작

Splash를 열고 Play하면 Playground로 전환합니다. RESUME PLAY로 두 캐릭터의 전투를 시작합니다. CHARACTER STAGE에서 SWORD/RIFLE을 선택하면 정면 미리보기의 실제 장비와 복귀 후 플레이어 무기가 함께 바뀝니다. 사망 후 RESTART DUEL로 체력·물리·탄약·빙의를 복원합니다. 세 씬은 각각 직접 Play할 수 있습니다.

입력 동작
WASD / Shift / Space 이동 / 달리기 / 점프
마우스 좌클릭 검 공격 또는 총 발사·유지 사격
1 / 2 / Q 검 / 총 / 다음 무기
F / R 뽑기·수납 / 장전
Tab / F8(Editor) 메뉴 / 빙의 해제·재빙의

공통 API와 최소 구성

Pawn이 소유권·팀·장비 선택·공격 차단·피해·사망을 담당합니다. 플레이어와 AI가 같은 SelectWeapon, SetWeaponDrawn, TryAttack, ResetCombat을 사용합니다. Movement는 컨트롤러가 전달한 방향으로 회전하며 AI가 Camera.main에 의존하지 않습니다. PawnController의 플레이어 카메라/입력 의존을 분리하고 PlayerController에만 플레이어 싱글톤을 유지했습니다.

MeleeWeapon은 실제 애니메이션 피해 구간과 HitBox를 사용하며 같은 공격에서 중복 피해를 막습니다. Gun은 몸→총구 차폐와 총구→조준점 레이를 검사하고 자기 몸·공격 트리거를 제외합니다. 장애물과 아군 몸은 탄을 막습니다. 기본 탄창12·예비탄48·장전1.2초이며 교체·수납·피격·메뉴는 공격과 장전을 취소합니다. 자동 사격은 InputAction.IsPressed를 읽어 별도 누름 상태를 없앴습니다.

검은 기존 Unsheathe/SheatheBack01_R 클립(각0.733333초)을 재사용하고45% 시점에 손/등 소켓을 교체합니다. 동작 중 이동·공격을 차단합니다. 총의 수납은 즉시 소켓을 전환합니다. 별도 애니메이션 다운로드나 새 에셋 팩은 사용하지 않았습니다.

실제 Unity Behavior 그래프

asset을 작성했습니다. Start의 반복 아래 Find→Approach→Attack을 연결하고 Target 블랙보드를 공유합니다.

남은 사항

요청한 구현·필수 실행 검증은 완료했습니다.

개발 화면

Unity Behavior 상대의 근접 공격과 플레이어 HP70 — 실제 게임 캡처

CharacterStage의 실제 Rifle 장비 정면 미리보기와 직렬화 버튼

반복 번들 왕복 후 지면 위 캐릭터와 정상 메뉴·Rifle12/48

출처

중앙 아카이브 원문

같은 카테고리의 글

개발 기록 아카이브 전체 보기 ↗