연습 문제 : Player vs Monster

Jaemyeong Lee·2024년 12월 11일
0

입문자를 위한 UE5

목록 보기
32/60

👻 플레이어와 몬스터의 전투 구현 개요

이 블루프린트의 목표는 플레이어와 몬스터 간의 간단한 전투를 구현하는 것입니다. 각 캐릭터는 체력(Hp)과 데미지(Damage) 속성을 가지고 있으며, 입력된 키를 통해 서로 공격하는 이벤트가 트리거됩니다.


🌱 1. 클래스 생성

  1. Player 클래스와 Monster 클래스의 생성

    • 각각의 클래스를 만들어 HpDamage라는 멤버 변수를 생성했습니다.

    • Hp는 체력을, Damage는 공격력을 나타냅니다.

    • Player 클래스의 예:

      • Hp = 100
      • Damage = 10
    • Monster 클래스의 예:

      • Hp = 150
      • Damage = 20

🌱 2. 초기 세팅

  1. 객체 배치

    • 플레이어와 몬스터의 블루프린트 객체를 맵 위에 배치합니다.
    • 이를 통해 BP_Player와 BP_Monster가 레벨 내에서 물리적으로 존재하게 됩니다.
  2. 레벨 블루프린트 설정

    • Event BeginPlay에서 BP_Player와 BP_Monster를 레퍼런스 변수로 가져옵니다.
    • 각 객체의 초기 속성(Hp, Damage)을 설정하고, 전투를 트리거할 이벤트를 준비합니다.

🌱 3. 기능 구현

3.1. 1번 키: Monster 입장에서 Player 피격

  • 로직 흐름

    1. Key Pressed 1 이벤트가 실행되면 Monster 객체가 On Damaged 이벤트를 호출합니다.
    2. Monster의 공격력(Damage)이 Player의 체력(Hp)에서 차감됩니다.
    3. 남은 Player 체력이 화면에 출력됩니다.
  • BP_Monster의 On Damaged 구현

    • Is Valid 노드를 사용하여 입력된 객체가 유효한지 확인합니다.
    • 유효하다면 Monster의 Damage 값을 가져와 Player의 체력에서 차감합니다.
    • Hp가 0보다 작아지는 것을 방지하기 위해 Max(0) 노드를 사용합니다.
    • 결과를 Print Text로 화면에 출력합니다.

3.2. 2번 키: Player 입장에서 Monster 피격

  • 로직 흐름

    1. Key Pressed 2 이벤트가 실행되면 Player 객체가 On Damaged 이벤트를 호출합니다.
    2. Player의 공격력(Damage)이 Monster의 체력(Hp)에서 차감됩니다.
    3. 남은 Monster 체력이 화면에 출력됩니다.
  • BP_Player의 On Damaged 구현

    • 로직은 Monster의 On Damaged와 유사하게 구성됩니다.
    • Player의 Damage를 Monster의 Hp에서 차감하며, 역시 Max(0)로 체력이 음수로 떨어지는 것을 방지합니다.
    • 결과를 Print Text로 화면에 출력합니다.

🌱 4. 객체 지향 활용

  • 각 클래스 내부에서 기능 구현
    • 각각의 이벤트 처리를 Player와 Monster 클래스 내부에서 담당하게 하여 블루프린트 코드의 가독성과 재사용성을 높였습니다.
    • Player와 Monster는 공통적으로 On Damaged 이벤트를 가지며, 공격과 방어를 서로 독립적으로 처리합니다.

🌱 5. 결과

  • 실행 예시
    1. 1번 키 입력: "Monster Attack Player Hp: (체력)" 메시지가 출력됩니다.
    2. 2번 키 입력: "Player Attack Monster Hp: (체력)" 메시지가 출력됩니다.
    3. 두 이벤트는 서로 독립적이므로 다른 로직을 추가할 때도 쉽게 확장 가능합니다.

profile
李家네_공부방

0개의 댓글