
C++ 클래스에서 만든 함수를 블루프린트에 호출하여 사용해 보자
프로그래머가 블루프린트에서 호출할 수 있게 핵심 기능을 가진 함수를 만들고 디자이너가 블루프린트에서 함수를 조합해서 게임 기능을 제작하는 역할이 가능하다
이번에는 SpaceBar를 누를 때 공이 올라오게 만들고 중력의 영향으로 다시 내려가게 만드는 기능을 구현해 볼 것이다
함수를 만들기 위해 먼저 언리얼엔진을 실행하고 C++ 형식의 새 프로젝트를 생성한다
프로젝트가 생성이 되면 Actor클래스를 상속받아서 C++클래스를 하나 생성한다
클래스가 생성되고 나면 먼저 MyActor의 헤더파일로 이동해서 bool타입으로 키가 눌렸음을 알리는 bPressedKey변수를 선언한다
그리고 InputSpaceKey함수와 MoveUp함수를 선언해 준다
헤더파일에서 구현이 완료되면 소스파일에서 함수를 구현해 줄 차례이다
InputSpaceKey함수에서는 매개변수를 가져와서 bPressedKey를 설정해 준다
그리고 MoveUp함수에서는 키가 눌려서 bPressedKey변수가 true가 되었을 때 액터의 위치값을 가져와서 상승시키도록 계산한 뒤에 다시 액터의 위치로 설정하도록 코드를 작성한다
함수를 완성한 다음에는 이 함수들을 블루프린트에서 호출해서 사용해야 한다
다만 이렇게 그냥 만들어진 함수들은 기본적으로 블루프린트에서 호출하려고 마우스 우클릭을 해도 컨텍스트 메뉴에는 보이지 않는다
이제 C++클래스에서 직접 만든 함수들을 블루프린트 클래스에서 호출할 수 있도록 만들어보자
프로퍼티를 언리얼 에디터에서 볼 수 있게 하기 위해서 UPROPERTY매크로를 사용했던 것을 기억할 것이다.
그와 대응되는 기능으로 함수에서는 UFUNCTION매크로를 사용하면 함수를 블루프린트에서 사용할 수 있게 설정하는 등의 기능을 지정자로 넣을 수 있다
헤더파일에 선언했던 함수들에 UFUNCTION매크로를 추가해 주고 지정자는 BluprintCallable과 Category = "Move"로 입력해 준다BlueprintCallable지정자는 해당함수를 블루프린트에서 사용할 수 있게 한다
[블루프린트에서 사용할 모든 함수에는 카테고리를 할당해 줘야만 정상적으로 호출을 할 수 있게 된다. (카테고리 지정자 입력)]
UFUNCTION 매크로 모두 작성하면 저장하고 언리얼에디터에서 컴파일해 준다
이제 만든 함수가 블루프린트에 잘 호출되는지 확인하기 위해서 MyActor클래스를 기반으로 블루프린트 클래스를 만들어야 한다
콘텐츠 브라우저에서 MyActor C++클래스를 우클릭하고 [MyActor기반 블루프린트 클래스 생성]을 선택하면 블루프린트 클래스 창이 뜬다
그다음에는 이 액터가 움직이는 것을 잘 보이게 만들기 위해 컴포넌트 패널에서 [+Add] 버튼을 눌러 Sphere컴포넌트를 추가해 주고 DefaultSceneRoot 컴포넌트에 끌어다 놓아 루트 컴포넌트로 만들어준다
그리고 중력을 구현하기 위해 디테일 패널의 Physics 카테고리에서 Simulate Physics에 체크해 준다
블루프린트 세팅의 마지막 과정으로는 이 액터가 입력받을 수 있도록 해야 한다
블루프린트 에디터에서 이벤트 그래프 패널로 이동하고 그래프 빈 영역에 우클릭해서 GetPlayerController와 EnableInput함수를 검색하여 노드를 배치해 준다
이것들을 BeginPlay이벤트 노드와 연결해 주면 이 액터가 입력받을 수 있도록 설정된다
기본세팅을 끝냈으니 이제 앞에서 만든 함수들을 블루프린트에서 호출해 보자
그래프의 빈 영역에 우클릭하고 input space를 검색하여 스페이스 바 이벤트를 추가하고, 하드 코딩으로 만들었던 InputSpaceBar함수도 찾아서 추가해 준다
그리고 InputSpaceKey함수 노드를 [Ctrl + D]를 사용하여 복제하고 각각 Pressed핀과 Released핀에 연결하는데, 이때 Pressed핀에 연결된 노드에는 눌렸다는 값이 true가 되도록 체크해 준다
이번에는 우클릭을 하여 만들었던 MoveUp함수를 검색하어 노드를 추가하고 Tick이벤트와 연결해 준다
블루프린트 작성이 모두 끝난 다음에는 컴파일과 저장을 한 뒤 블루프린트 에디터를 닫아준다
그다음에는 테스트를 위해서 MyMyActor를 레벨에 배치하고 게임을 플레이 시켜준다
스페이스바를 누르면 액터가 떠오르고 손을 떼면 다시 중력의 영향을 받아 떨어지는 모습을 확인할 수 있다
VR게임 개발을 위한 언리얼엔진/C++ 공부한 내용 끄적이기...
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!