스파르타내일배움-unreal

[스파르타코딩클럽] 블루프린트 연산 (2)

ye0n-j 2025. 5. 19. 21:21

[흐름문]

[flow control] - [sequence] 추가

[branch] 추가

[Flip Flop] 추가

* Branch : 컨디션 (Boolean 값)에 따라서 true이면 true인 노드 실행, false 이면 false 노드 실행 (= if문)

maxHP변수가 0보다 크거나 같다면 True 출력, 아니라면 False 출력
100으로 설정되어있기 때문에 0보다 크므로 True 값 출력

 

* Sequence : 순서대로 많은 노드를 구분해서 실행 시켜주는 노드

1부터 6까지 출력되게 만들어보자

 

Sequence를 이용해서 1부터 3은 0 / 4부터 6은 1에 실행되도록 하자
위와 같은 이미지
그렇다면 0과 1 노드를 바꾸면?
4,5,6,1,2,3 순서로 출력이 되는 것을 확인할 수 있다.

* Flip Flop : 반복적으로 변경되면서 실행해야할 때 해당 노드를 사용한다.

숫자 1을 눌렀을 때 어떤 행동을 하겠다는 설정을 하는 노드 생성
1을 누를 때마다 A와 B가 번갈아가면서 나온다

 

[반복문]

* While Loop : condition의 값이 false가 될 때까지 계속해서 무한 반복을 하는 것. Loop Body는 조건을 만족할 때 (True일 때) 실행할 노드를 연결한다. Completed는 false가 되었을 때 마지막으로 실행이 될 노드를 설정해주면 된다

Count 0으로 설정. 0보다 크지 않기 때문에 (같지 않음) False이므로 Completed 값이 출력됨
While Loop의 경우 True일 때 무한 루프에 빠질 수 있으므로 증감연산자를 사용해야 한다.
count 5로 설정 점점 숫자가 적어지고 마지막에는 0보다 크지 않으므로 END를 찍어야 한다.

 

* For Loop : while Loop는 조건에 따라서 True / False 값에 따라 동작하거나 멈추거나 했다면 For Loop는 내부의 조건을 가지고 있다.  인덱스가 시작하고 라스트 인덱스가 찍힐 때까지 반복한다.

0부터 5까지 출력되게 하고 그 뒤에는 END!!가 찍힐 수 있도록 된 반복문

 

[실습1] 텍스트 슈팅 게임

- 블루프린트만 이용해 단순한 "총알 발사 + 재장전" 로직 구현

  * 총알은 기본적으로 30발이 주어진다.

  * 마우스 좌클릭을 할 때마다 총알이 1발씩 발사된다

  * 키보드 R을 누르면 총알 30발이 재장전 된다.


변수 Bullets, 기본값 30으로 설정
왼쪽 좌클릭을 할 때마다 총알이 한 발씩 나가야 한다. 좌클릭 관련 노드 추가
왼쪽 마우스를 누를 때마다 총알이 하나씩 빼기(Subtract)가 되도록 설정. 현재 설정된 총알 수를 카운트해서 계속해서 보여준다
마우스 왼쪽을 누를 때마다 점점 줄어드는 총알의 수
R 버튼을 눌렀을 때 총알이 30으로 재장전 될 수 있도록 설정해준다.
줄어들던 총알은 R을 누르면 다시 30으로 돌아가서 다시 줄어들기 시작한다.


[실습2] For Loop를 이용한 구구단 만들기

- ForLoop 2개를 만들어서 구구단을 만들어보자

 

결과 값만 나오기 때문에 알아볼 수 없으니 조금 더 깔끔하게 만들어보도록 하자

우선 변수에 수, 곱할 값을 넣을 수 있도록 변수를 생성하도록 하자

Format Text에 {A} X {B} = {C} 를 넣어서 어떤 값을 곱해주는지 확인 할 수 있게 하자
조금 더 깔끔한 구구단이 되었다.

 

[ 커스텀 타입 생성 ]

콘텐츠 드로우에 블루프린트 - 열거형 선택해서 생성해준다
이너머레이터 추가를 눌러 각각 디스플레이 이름을 지어준다
새로운 변수로 우리가 만들었던 열거형 타입을 지정할 수 있다.

 

* Switch on Eitem : 아이템의 타입이 어떤 열거형일 때 무엇이 실행되는지 결정할 수 있다. 편하게 조건을 나눠서 사용할 수 있다.


[ 숙제 ]

1) 발사 & 재장전 버그 수정

실습 1에서 만든 총알 발사 로직에는 2가지 버그가 존재한다. 

 (1) 총알 발사 제한 : Bullet이 0 이하일 때는 발사 불가

 (2) 불필요한 재장전 방지 : 이미 Bullet이 30발이면 재장전이 되지 않도록 수정

 

2) While Loop로 구구단 구현

For Loop 문이 아닌 While Loop 문을 사용하여 구구단을 만들어 결과 출력하기