목표 : 남아있는 발사체(탄약)의 개수를 화면 왼쪽에 보여주려고 함
남아있는 탄약의 개수를 변수에 저장하고, 이 변수를 화면에 출력하려고 함.
언리얼엔진에선 변수를 어떻게 생성할까?
블루프린트의 Event Graph 창으로 가서 Window > My Blueprint 클릭
블루프린트 창의 왼쪽에 기존에 없었던 My Blueprint 탭이 생성됨.
거기서 VARIABLES 의 + 버튼을 클릭하여 새로운 변수를 생성할 수 있음.
변수 생성시에는 변수의 이름과 타입을 지정해줘야 함.
그러면 오른쪽 Details 탭이 생기고 방금 생성한 ammo 변수를 조작할 수 있는데
Default value를 설정하려면 블루프린트를 컴파일하라고 나와있음.
따라서 왼쪽 위에 Compile 버튼을 눌러주면
기본적으로 Ammo의 디폴트 값으로 0이 설정된 것을 확인할 수 있으며 이제 탄약의 디폴트값을 20으로 변경해줌.
그렇다면 게임을 하면서 이 탄약 값을 업데이트하려면 어떻게 해야 할까?
My Blueprint 탭에서 변수 ammo를 이벤트 그래프로 드래그 앤 드롭해주면
두 가지 옵션이 생성됨.
Get ammo는 현재 ammo에 저장된 값을 가져오는 것이고,
Set ammo는 ammo에 새로운 값을 덮어씌운다는 뜻임.
참고로 컨트롤을 누른 채로 하면 자동으로 Get, Alt를 누른채로 하면 Set이 됨.
위가 Get ammo, 아래가 Set ammo 노드
Get 노드는 데이터 출력만을 하는 출력 핀만 있으며, Set은 둘다 있음.
중요한 것은 언제 Ammo에 새로운 값을 덮어씌울것인지 알려주는 실행 핀이 필요하다는 것임.
또한 탄약을 발사할때마다 1발씩 제거해줘야 하므로 빼기 관련 노드가 필요함
subtract 노드 : 입력으로 받은 값에 원하는 만큼 빼서 그 값을 출력하는 노드
스페이스바를 눌러 발사체가 스폰되고 충격을 받아 날라가면 그때마다 현재 ammo의 값에서 -1을 뺀 값을 ammo에 할당하는 set 노드가 실행되고 그 값을 출력함.
게임 플레이시 왼쪽에 남은 탄약의 개수가 제대로 출력되는 것을 확인할 수 있음.
그러나 남은 탄약의 개수가 0이더라도 계속 탄약을 발사할 수 있고, 이때는 ammo 변수에 음수값이 할당되면서 화면에 출력됨.
따라서 탄약의 개수가 0이 되면 더 이상 발사체를 쏘지 못하게 해야함.
이를 위한 노드가 바로 Brance 노드.
조건이 참일때 실행할 노드와 거짓일때 실행할 노드를 나눔.
Bool 타입의 값을 리턴하는 노드 : greater, less, equal 검색 > 관련된 여러 노드
greater 노드. 입력핀으로 들어온 데이터가 설정한 값보다 클 경우 true, 아니라면 false를 리턴.
greater 노드의 입력값으로 현재 ammo의 값을 넣고, 만약 0보다 크면 true, 작다면 false가 리턴돼 brance 노드의 입력으로 들어감. 그리고 이 Branch 노드는 스페이스바가 눌릴때마다 작동하도록 실행핀을 설정하고, True일때만 발사체를 스폰하도록 연결함.
이를 통해 게임 플레이 시 발사체가 0이면 더 이상 발사체가 발사되지 않는 것을 확인할 수 있음.