슈터 게임 - Character 기획

GwakItect·2025년 7월 28일

Shooter Game Project

목록 보기
2/9

FPS 슈터 게임 - Character 구현

목표: 기본적인 FPS 플레이가 가능한 캐릭터캐릭터 컨트롤러를 C++로 구현한다.


1) 구현 요구 사항


구현 요구 사항:

  • 키보드와 마우스로 캐릭터 이동/시점 조작
    • 기본 동작 구현
      • 걷기: WASD 키로 이동
      • 달리기: Shift 키 조합으로 이동 속도 증가
      • 점프: Space 키로 수직 점프
      • 앉기: Ctrl/C 키로 전환
    • 각 동작에 맞는 애니메이션 재생
    • 동작 상태에 따른 이동 속도와 캐릭터 충돌 크기 조정

2) 클래스


MyCharacter 클래스 (가명)

  • 입력 함수 바인딩 처리
  • 상태 변수 관리 (달리기, 앉기 등)
  • 움직임 및 점프, 앉기 동작 처리

MyPlayerController 클래스

  • 매핑 컨텍스트 설정
  • EnhancedInputSystem 등록
  • HUD 및 UI 연동

3) 기본 구현


언리얼 엔진EnhancedInputSystem을 사용하여 입력 액션(IA) 및 매핑 컨텍스트(IMC) 설정

  • Space 키 입력 시 캐릭터가 점프하도록 내장 Jump 함수 연동
  • Ctrl 혹은 C 키 입력 시 앉기/서기 상태가 전환되도록 Crouch UnCrouch 함수 연동
  • Shift 키 입력 시 CharacterMovementComponentMaxWalkSpeed 설정

4) 속성


플레이어 캐릭터는 게임 진행 중 여러 속성을 가진다.

  • 속성
    • float Health: 현재 체력
      • float MaxHealth: 최대 체력
      • float Defence: 방어력
      • float Stamina: 달리기용 스태미너
  • 그 외 상태 관련 변수 bHasGun bIsCrouching bIsSprinting
  • 고려사항: 다양한 속성의 공통 구조화를 위해 FAttributeData 구조체 도입 고려
struct FAttributeData
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    float BaseValue;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    float CurrentValue;
};

5) 애니메이션


기본 동작 위에 상태 관리 로직애니메이션을 연동하여 자연스러운 캐릭터를 만든다.

  • 캐릭터의 상태를 관리할 열거형 변수 생성
  • 애니메이션 블루프린트를 만들어 캐릭터 Mesh 에 연결
  • 캐릭터의 상태에 따라 애니메이션 블루프린트에서 처리
  • 캐릭터의 상태를 관리할 열거형 변수 생성
enum class ECharacterState
{
    Idle,
    Walking,
    Sprinting,
    Crouching,
    Jumping,
    Shooting
};

6) 공격 시스템


플레이어가 마우스 좌클릭 입력 시 캐릭터의 상태에 따라 해당 무기의 발사 가능 여부를 판별하고 FireWeapon 함수 호출

  • 발사 가능 여부 체크
    • bIsSprinting: 캐릭터가 달리고 있는가
    • bIsJumping: 캐릭터가 점프 상태인가
    • 추가 고려 사항: 캐릭터가 벽 근처에 있는지(bIsNearWall 등)
  • 판별용 함수 CanShoot
    • 위 모든 상태를 파악하여 캐릭터가 사격이 가능한 상태인지 확인하는 함수
    • bool 타입 반환

0개의 댓글