언리얼 엔진 본캠프 1주차-3 : 레벨 블루프린트

정재훈·2024년 12월 18일
0

unreal engine

목록 보기
9/45

<블루프린트>

오늘은 레벨 블루프린트에서 블루프린트 사용법을 익혀봤다

   BeginPlay : 게임 시작 시 한번만 실행
   Tick : 매 프레임 마다 실행
get : 변수의 값을 가져오는 노드
set : 변수 값을 지정하는 노드

변수, 사칙연산, 비교 연산자, 논리 연산자(and bool이라고 검색하면 쉽게 찾을 수 있다) 등을 알아봤고 C언어에서의 if문(if-else문)과 반복문이 블루프린트에서는 branch와 while loop, for loop라는 것도 알 수 있었다


열거형을 만들려면 콘텐츠 브라우저 우클릭 -> 블루프린트 -> 열거형을 하면

이런 창이 만들어 지고 [이너머레이터 추가]를 클릭해서 열거기들을 추가할 수 있다

이후 과제를 진행했다

과제1 - 총알 발사 및 장전 버그 고치기

좌클릭을 했을 때 총알 개수를 하나씩 줄이고 R키를 누르면 
30발로 장전이되는 블루프린트에서 총알이 0발 이하(음수)에서 
발사가 안되도록, 30발 있는 경우 장전이 안되도록 수정해보기
(노란 박스 부분을 추가)

발사 : branch를 사용해서 총알이 0보다 클 때만 총알 수를 줄이고 0보다 작을 때는 총알 수를 감소시키지 않게 했다
장전 : 총알이 30발이면 Set 노드를 부르지 않았고 30발 미만이면 Set 노드로 재장전 하도록 하였다



과제2 - 총알 피격 + 체력 회복

총알 피격-: Hp와 Damage라는 노드를 생성하고, 관련 로직을 작성
체력 회복 - Heal이라는 노드를 생성하고, 관련 로직을 작성

총알 피격 : 총알을 발사하면 Hp에서 Damage(3)만큼 깎이도록 하였다
체력 회복 : F를 누르면 Hp에서 Heal(10)만큼 오르도록 하였다



과제3 - while loop 구구단

구구단 2단에서 9단까지 출력

처음 만든건 빨간 박스의 Set 노드를 빼고 만들었는데 이러니 [2단]만 출력이 되고 3단, 4단은 나오지 않았다. 첫 블루프린트이기도 하고 눈에 익지 않아서 어디가 문제인지 계속 고민해보다가 C언어라 생각하고 노드와 연결된 선들 하나씩 따라가보자 해서 따라가보니 두번째 while loop를 한 번 돌고나서 B값을 초기화 시키지 않아서 이후 구구단들이 나오지 않았다는걸 깨달았다
이후 Set 노드를 추가해서 구구단을 출력했다



과제 4 - 가위 바위 보

1. 열거형으로 가위, 바위, 보를 지정한다.
2. 플레이어의 값은 키보드 입력으로 결정한다.
3. 컴퓨터의 값은 랜덤 함수로 결정한다. 
4. 플레이어의 승/무/패 결과를 출력한다.

컴퓨터 값을 랜덤하게 결정하기 위해 Random Integer 노드를 통해 랜덤한 수를 뽑고 그 수를 가위,바위,보에 대응시키기 위해 switch on Int 노드를 사용했다

  • 정수형을 바이트형으로 바꾸면 Enum으로도 변환할 수 있다

키보드 1, 2, 3으로 플레이어는 (바위, 가위, 보) 값을 가지게 하였고
그 값에 따라 컴퓨터의 값과 비교하면서 무승부, 승리, 패배를 출력하도록 하였다

  • Switch on EItem 노드에서 Scissors와 Paper도 Rock부분과 같고 승/패를 결정하는 branch노드에서 가위/바위/보 룰에 따라 컴퓨터 값만 바꿔주면 된다






참조 사이트
1. https://forums.unrealengine.com/t/random-switch-on-enum/348532/3
2. https://forums.unrealengine.com/t/how-to-compare-enums-in-blueprints-with-byte-compare-in-5-0/685167
3. https://velog.io/@charlese_note/Enum

profile
드가자

0개의 댓글