가위 바위 보2017. 12. 28. 02:59

목표 : 언리얼 엔진을 이용하여 2사람이 네트워크 상에서 가위 바위 보 게임을 할 수 있도록 서버와 클라이언트 기능을 완성한다. User Interface, PlayerController, GameMode 컴포넌트들을 적절히 사용하는 방법을 이해하고 사용할 수 있다


언리얼에서 지원하는 Listen Server 시스템을 사용한다

아래의 예제는 완성된 것이 아니므로 이를 참고하여 학습에 도움이 되도록 사용하면 된다


가위 바위 보를 5초 이내에 제시하여 한번의 승부를 결정하고 이와 같은 내용을 3회 반복하여 최종 승부를 판단하며 그 결과를 각 클라이언트 와면에 출력하고 끝난다


위젯 블루프린트 생성

컨텐츠 브라우저에서 마우스 우측 > User Interface > 위젯 블루프린트 > 이름을 BP_GameWidget 으로 입력한다


BP_GameWidget디자이너 모드 화면구성




BP_GameWidget그래프 화면구성



커스텀 PlayerController 생성 (BP_PlayerController)



커스텀 GameMode 생성 (BP_GameMode)



BP_GameMode Count_Down 함수

Posted by cwisky
Mouse Over Color Change2017. 12. 24. 22:47

목표 : 큐브에 마우스가 올라가면 큐브의 색상이 변경되고 내려가면 원래 색상으로 복귀하는 기능을 구현한다


오브젝트(큐브) 위에 마우스 커서가 올라가면 On Begin Cursor Over (cube) 이벤트가 작동한다.

On Begin Cursor Over 이벤트에서 동적 머티리얼의 색상을 변경하면 된다


실행 중에 오브젝트의 머티리얼 기본색상을 변경해야 하므로 동적 머티리얼 인스턴스(Dynamic Material Instance)를 사용해야 한다


1. 공백 프로젝트를 생성한다

2. 컨텐츠 브라우저에서 마우스 우측 > 블루프린트 클래스 > Actor > 이름을 BP_CubeActor 으로 지정한다

3. BP_CubeActor 를 더블클릭하여 열고 [컴포넌트 추가] 버튼을 눌러 큐브를 추가한다



4. 머티리얼을 생성하여 기본색상에 Vector Parameter 노드를 연결한다

 - 컨텐츠 브라우저에서 마우스 우측 > 머티리얼 > 이름을 M_CubeMat 으로 입력한다

 - M_CubeMat를 더블클릭하여 열고 그래프 바탕에서 마우스 우측 > VectorParameter 검색하여 노드 추가

 - 노드의 이름을 ColorParam 으로 입력하고 기본색상을 임의로 선택한다



5. BP_CubeActor의 Cube 컴포넌트를 선택하고 [디테일] 뷰의 Material 패널에서 앞서 작성된 M_CubeMat를 설정한다



6. BP_CubeActor의 이벤트 그래프에 다음과 같은 내용을 입력한다



7. BP_CubeActor를 드래그하여 뷰포트에 올리고 실행하여 마우스를 큐브에 올리면 다음과 같이 색상이 변경되고 마우스를 내리면 원래의 색상으로 돌아오는 것을 확인할 수 있다





Posted by cwisky
Cube Color Change2017. 12. 24. 18:34

Dynamic Material Instance


목표 : 큐브가 상하로 이동하면서 1초 주기로 큐브의 색상이 변경되는 작성한다


실행 중에 오브젝트의 재질을 변경하려면 Dynamic Material Instance 방법을 사용해야 한다.


Dynamic Material Instance

머티리얼을 생성하고 편집할 때 머티리얼의 기본색상을 정적인 값으로 설정하면 실행 중에는 머티리얼의 색상을 변경할 수는 없으므로 머티리얼의 기본색상(Base Color)을 설정할 때 Vector Parameter로 설정하고 그 노드의 이름을 기억했다가 스크립트에서 사용하여 실행시간에 색상을 지정할 수 있다


공백 프로젝트를 생성하고 아래의 절차를 따라 동적 머티리얼을 테스트한다


1. 큐브에 적용할 머티리얼을 생성한다

 - 컨텐츠 브라우저에서 마우스 우측 > 머티리얼 > 이름을 M_CubeMat 으로 지정한다


2. M_CubeMat 를 더블클릭하여 열고 기본색상을 파라미터로 설정한다


위의 그림에서 CubeColor 노드는 Vector Parameter 를 검색하면 추가할 수 있고 노드의 이름은 왼쪽 [디테일]뷰의 Parameter 항목에서 편집할 수 있다. 초기의 색상을 편집하려면 CubeColor 노드를 더블클릭하여 색상선택기를 이용하면 된다 



3. 완성된 머티리얼을 원하는 메시에 적용한다

 - 클래스 블루프린트를 생성하고 컴포넌트 추가 버튼을 눌러 큐브를 추가한다

 - 컴포넌트로 추가된 큐브를 선택하고 우측 [디테일] 뷰 / Material 항목에 앞서 생성한 머티리얼(M_CubeMat)을 지정한다



4. 오브젝트에 설정된 머티리얼의 색상을 변경하려면 [Construction Script] 혹은 [이벤트 그래프] 를 이용한다

 - Construction Script에서 머티리얼의 기본색상을 변경하면 언리얼 레벨에디터 상에서 바로 실행되어 효과를 확인할 수 있다.

 - 이벤트 그래프에서 머티리얼의 기본색상을 변경하면 실행시간에만 그 효과를 확인할 수 있다


5. BP_Cube의 Construction Script 탭을 누르고 다음과 같이 작성하면 언리얼 에디터에서 동적 머티리얼의 효과를 볼 수 있다. 동적 머티리얼 인스터스를 생성하고 벡터 파라미터에 임의의 색상을 설정하는 내용이다. 여기서 생성된 MatInstance는 이벤트 그래프에서도 그대로 사용할 수가 있다




6. BP_Cube의 [이벤트 그래프에 다음과 같이 작성한다. 큐브가 상하로 이동하는 중에 1초 주기 마다 큐브의 색상이 임의의 색상으로 변경되도록 한 것이다


위에서 사용된 타임라인 노드는 다음과 같이 설정한다



모두 완성한 후에 실행해보면 다음 그림과 같이 1초마다 큐브의 색상이 임의의 색상으로 변경되고 상하 이동 애니메이션도 제대로 작동하는 것을 확인할 수 있다



Posted by cwisky