언리얼 엔진/블루프린트

Unreal Engine - 블루프린트: 총기 시스템과 스킬 쿨타임 구현하기

로안님 2024. 12. 18. 23:42

목차

  1. 총알 소모 및 발사
  2. 명중률 판정 및 Miss 처리
  3. 크리티컬 명중과 일반 명중 처리
  4. 장전 기능 구현
  5. 스킬 쿨타임 확인
  6. 체력 회복 조건 확인
  7. 체력 회복 처리
  8. 쿨타임 설정 및 해제
  9. 느낀 점과 배운 점
  10. 수정할 기능 및 추가할 기능


1. 첫 번째 이미지: 총알 소모 및 발사

설명 내용 추가:
"왼쪽 마우스 버튼 클릭 시 총알이 1개씩 소모되도록 설정했습니다. Branch 노드를 통해 총알이 0보다 클 때만 발사되도록 확인하고, 총알 수를 감소시킵니다."


2. 두 번째 이미지: 명중 확인 및 Miss 출력

설명 내용 추가:
"총알 발사 후 랜덤 숫자(1~10)를 생성해 명중 여부를 판정합니다. 명중 조건이 실패(3 이하)하면 'Miss'를 출력하고, 남은 총알 수를 함께 출력합니다."


3. 세 번째 이미지: 크리티컬과 일반 명중 처리

설명 내용 추가:
"**랜덤 숫자(1~10)**를 생성해 1이 나오면 크리티컬 명중으로 판정합니다. 크리티컬 성공 시 헤드샷 데미지를 계산하고 출력합니다. 크리티컬에 실패하면 일반 명중으로 데미지를 계산합니다."


4. 네 번째 이미지: R 키를 사용한 장전 로직

 

설명 내용 추가:
"R 키를 입력하면 총알 수를 확인하고 장전합니다. 총알이 29 이하일 때만 장전이 가능하며, 총알 수를 30으로 설정합니다."


5. 다섯 번째 이미지: 스킬 쿨타임 확인

설명 내용 추가:
"E 키를 입력하면 스킬의 쿨타임 여부를 확인합니다. 쿨타임 중일 경우 '쿨타임 중'이라는 메시지를 출력합니다."


6. 여섯 번째 이미지: HP 회복 여부 확인

설명 내용 추가:
"스킬 사용 시 체력이 100 이상이면 회복 불가로 설정하고, 'MaxHP'라는 메시지를 출력하며 종료합니다."


7. 일곱 번째 이미지: 체력 회복 처리

설명 내용 추가:
"스킬 사용 후 체력을 회복합니다. 체력이 100 이상이면 최대 체력(Max HP)로 설정하고, 100 미만이면 **회복량을 더해 체력(E HP)**을 증가시킵니다."


8. 여덟 번째 이미지: 쿨타임 설정

설명 내용 추가:
"스킬 사용 후 쿨타임을 설정합니다. Delay 노드를 사용해 2초 동안 쿨타임 상태로 만들고, 이후 쿨타임을 해제하여 스킬을 다시 사용할 수 있도록 합니다."


느낀 점과 배운 점

  1. 로직의 순서가 중요하다
    • 기능을 추가할 때 로직의 순서가 엉키면 오류가 발생하거나 예상한 대로 작동하지 않을 수 있음을 배웠습니다.
    • 특히 조건문(Branch), 변수 설정(Set), Delay 노드처럼 순차적으로 실행되어야 하는 로직은 정리와 이해가 필수적입니다.
  2. 블루프린트 정리가 필수다
    • 기능을 확장하거나 수정할 때 노드의 흐름이 잘 정리되어 있어야 시간을 절약할 수 있다는 것을 느꼈습니다.
    • 한눈에 이해하기 쉽도록 코멘트 추가카테고리별 그룹화를 하는 습관이 중요합니다.
  3. 변수의 활용과 관리
    • 변수를 잘 관리하면 로직의 흐름을 간단하게 정리할 수 있다는 것을 배웠습니다.
    • 기능 추가 시 변수 설정과 초기화를 신경 써야 버그를 방지하고 코드의 확장성을 높일 수 있습니다.
  4. 작은 단위부터 차근차근 구현하기
    • 한 번에 복잡한 기능을 구현하려고 하면 로직이 꼬이기 쉬우므로, 기본 동작부터 단계적으로 구현하고 추가하는 것이 효과적이라는 점을 깨달았습니다.
    • 예: 발사 → 총알 소모 → 장전 → 명중률 추가처럼 작은 단위로 나누어 작업하기.
  5. 랜덤 요소를 활용한 재미 추가
    • 랜덤 숫자와 조건문을 사용해 명중률, 크리티컬 판정, 회피 시스템 등을 구현하면서 게임의 재미를 높일 수 있었습니다.
    • 단순 반복이 아닌 다양한 결과가 나오도록 로직을 설정하는 것이 중요합니다.
  6. 확장 가능성을 고려한 설계
    • 기능을 처음 설계할 때 확장 가능성을 고려해야 나중에 추가할 기능(예: 적의 움직임, 회피 시스템)을 쉽게 연결할 수 있다는 것을 느꼈습니다.
    • 구조를 미리 나누고 변수와 기능을 정리하면 더 깔끔하게 구현 할 수 있습니다.

정리 및 적용 방법

  • 로직 정리: 블루프린트를 작업할 때 코멘트를 달고, 기능별로 그룹화하여 정리.
  • 작업 순서: 기본 기능부터 차근차근 구현하고 테스트한 후, 확장 기능을 추가.
  • 변수 관리: 변수 초기화와 업데이트를 명확히 하고, 변수 이름에 역할을 직관적으로 표현.
  • 랜덤 로직 활용: 재미를 주기 위해 랜덤 요소를 적절히 활용하고 결과에 따른 피드백을 추가.

수정할 기능

  1. 총알이 0이 되었을 때의 처리
    • 총알이 0일 때 발사를 막고, "총알이 없습니다"라는 메시지를 출력하도록 수정.
  2. 장전 시 일정 시간 동안 총을 쏘지 못하게 하기
    • 장전 중 일정 시간 동안 총 쏘기 기능을 비활성화하고, 장전 완료 후 다시 활성화.
  3. 쿨타임 중 스킬을 사용하면 남은 시간 출력하기
    • 스킬 쿨타임 중에 재입력 시 남은 쿨타임 시간을 출력.

추가할 기능

  1. 적의 움직임에 맞춰 총을 쏘는 기능
    • 게임 시작 후 랜덤으로 L(좌클릭) 또는 R(우클릭) 값을 출력.
    • 출력된 값에 맞게 일정 시간 내에 클릭해야 데미지 적용.
    • 더 짧은 시간 안에 수행하면 헤드샷 처리로 더 큰 데미지를 적용.
  2. 적의 총알을 피하는 기능
    • 랜덤하게 W, A, S, D 값이 출력되면 플레이어가 해당 방향키를 일정 시간 내에 입력해야 회피 성공.
    • 입력에 실패하면 데미지가 적용되도록 설정.