튜토리얼

12

분 소요

Components를 사용하여 TV 컨트롤러 만들기

본 튜토리얼은 키보드(왼쪽 및 오른쪽 화살표 키)를 사용해 조작할 수 있는 TV 리모컨을 만드는 법을 시연합니다.

Shilpa Yadav, Design Student @ Monash University

소개

이 튜토리얼의 목표는 ProtoPie에서 컴포넌트, 변수, 그리고 send & receive를 사용하여 TV 컨트롤러의 동작을 시뮬레이션하는 것입니다. 또한 스크롤 컨트롤러를 사용하여 TV 콘텐츠를 전환하고 선택된 썸네일에 효과를 추가할 것입니다. 이 튜토리얼을 마치면 전문적으로 보이는 TV 컨트롤러 시뮬레이션을 만들 수 있습니다.

배울 내용

  1. 키보드 키(왼쪽 & 오른쪽 화살표 키)로 변수를 조작하기

  2. 각 인스턴트 컴포넌트에 고유한 식별을 위한 특별한 번호 부여하기

  3. 영화 카드와 썸네일에 선택 효과 만들기

  4. 선택한 콘텐츠를 씬으로 이동시키기

마지막에는 이런 것을 만들 수 있게 됩니다!


TV Controller Prototype Made With ProtoPie

[시작 Pie 파일] [완성된 Pie 파일]

단계별 안내

1. 키보드 키(왼쪽 & 오른쪽 화살표 키)로 변수를 조작하기

이 단계에서는 오른쪽 화살표 키를 사용하여 변수를 1씩 증가시키거나 왼쪽 화살표 키를 사용하여 1씩 감소시키는 방법을 배웁니다. 이 변수는 화면의 영화 콘텐츠 목록에서 선택된 영화를 나타냅니다.

💡 왜 요소 자체와 상호작용하는 대신 변수를 사용할까요?

이 경우 씬에는 영화가 5개 있습니다. 그리고 각 영화에는 해당하는 카드 항목과 썸네일 이미지가 있습니다. 영화 간을 전환할 때 각 영화 인스턴스 카드와 썸네일 이미지는 동일한 동작을 갖게 됩니다. 모든 카드와 썸네일 이미지에 상호작용을 수동으로 추가할 수도 있지만, 그건 반복적이고 지루한 작업이 너무 많아질 뿐입니다.

그래서 이 경우에는 더 스마트한 방법을 사용할 것입니다. 화면에 현재 표시된 영화 수를 나타내는 하나의 변수만 설정할 것입니다. 그리고 모든 카드와 썸네일 이미지가 이 변수를 관찰하고 그에 맞게 동작하도록 할 것입니다.

 1. 메인 씬에 새로운 변수를 만들고 이름을 selected_number로 지정합니다. 그런 다음 영화의 시작 값을 1로 설정합니다(영화 범위가 1부터 5까지이므로).


Create a new variable in the main scene and name it "selected_number".

 2. 키보드로 변수 값 증가시키기

  a. Press trigger를 추가하고 눌릴 키를 키보드의 오른쪽 화살표 키로 설정합니다

  b. 조건을 추가합니다. 그런 다음 조건을 selected_number가 5와 같지 않음으로 설정합니다

  c. 영화는 5개뿐이므로, 변수가 5를 넘지 않도록 조건을 사용합니다

  d. 조건 아래에 Assign response를 추가합니다. 그런 다음 수식 selected_number+1을 사용하여 selected_numberAssign response를 설정합니다


Increase the value of the variable with the keyboard

 3. 키보드로 변수 값 감소시키기

  a. Press trigger를 추가하고 눌릴 키를 키보드의 왼쪽 화살표 키로 설정합니다

  b. 조건을 추가합니다. 그런 다음 조건을 selected_number가 1과 같지 않음으로 설정합니다

  c. 조건 아래에 Assign response를 추가합니다. 그런 다음 수식 selected_number-1을 사용하여 selected_numberAssign response를 설정합니다

  💡 변수가 1보다 아래로 내려가지 않도록 조건을 사용합니다


Decrease the value of the variable with the keyboard

 4. 이제 selected_number의 디버그 토글을 켜고 미리보기 모드로 이동합니다. 키보드의 오른쪽 및 왼쪽 화살표 키를 사용하여 selected_number의 값을 변경할 수 있어야 합니다. 그리고 값은 5를 넘거나 1보다 아래로 내려가지 않습니다.


Now turn on the debug toggle of "selected_number"

2. 각 컴포넌트 인스턴스에 특별한 번호 부여하기

 1. 각 Movie 인스턴스에 특별한 번호 부여하기

  a. Movie 컴포넌트를 엽니다

  b. Movie 컴포넌트에 새로운 변수를 만들고 이름을 movie_number로 지정합니다

  c. movie_number 변수에 대해 Make Overridable 옵션을 체크합니다


Give each "Movie" instance a special number

  d. 메인 씬으로 이동합니다. 그런 다음 (movie 1~5)의 movie_number 값을 각각 1, 2, 3, 4, 5로 설정합니다


Set the value of "movie_number" of (movies 1 to 5) to 1, 2, 3, 4, 5 respectively.

 2. 각 Thumbnail 인스턴스에 특별한 번호 부여하기 (Movie 인스턴스와 동일한 논리)

  a. Thumbnail 컴포넌트를 엽니다

  b. Thumbnail 컴포넌트에 새로운 변수를 만들고 이름을 thumbnail_number로 지정합니다

  c. thumbnail_number 변수에 대해 Make Overridable 옵션을 체크합니다


Give each "Thumbnail" instance a special number (same logic as the movie instance)

  d. 메인 씬으로 이동합니다. 그런 다음 (썸네일 1~5)의 값을 각각 1, 2, 3, 4, 5로 설정합니다


Set the value of (thumbnails 1 to 5) to 1, 2, 3, 4, 5 respectively

💡 왜 이 두 컴포넌트에 새 변수를 만들까요?

각 영화와 썸네일 인스턴스에 고유한 정체성을 부여하기 위해서입니다.

💡 왜 "Make Overridable" 옵션을 체크할까요?

메인 씬에서 영화와 썸네일 번호를 사용자 지정하기 위해서입니다.

3. 영화 카드와 썸네일에 선택 효과 만들기

 1. 메인 씬의 selected_number 변수가 변경될 때 메시지를 보냅니다.

  a. 메인 씬에서 Detect trigger를 추가하고 **selected_number **변수를 감지하도록 설정합니다.

  b. Detect trigger 아래에 Send response를 추가합니다. 메시지를 selected로 설정합니다. 그런 다음 Send Value Together 옵션을 체크하고 값을 selected_number로 설정합니다.


Send a message when the "selected_number" variable in the main scene changes

💡 이 맥락에서 send 및 receive 트리거를 사용하는 이유는 무엇인가요?

컴포넌트를 사용하고 있으며, selected_number에 저장된 값을 다루는 동안 메인 씬에서 부모 컴포넌트를 직접 변경할 수 없기 때문에 send & receive를 사용할 것입니다.

 2. 메인 씬에서 Movie 컴포넌트가 메시지를 받도록 합니다.

  a. Movie 컴포넌트에서 새 변수를 만들고 이름을 selected_number로 지정합니다

💡 왜 같은 이름의 변수를 만들었을까요?

컴포넌트 내부에서는 메인 씬의 변수에 접근할 수 없기 때문입니다. 그래서 같은 이름의 변수를 만들고, 이를 사용하여 메인 씬의 selected_number 값을 받습니다.

  b. Movie 컴포넌트에 Receive trigger를 추가합니다. 메시지를 selected로 설정합니다. Assign to Variable 옵션을 체크합니다. 그런 다음 할당할 변수를 selected_number로 설정합니다


Add a Receive trigger for the "movie" component

  c. Receive trigger 아래에 두 개의 조건을 추가합니다. 두 조건의 이름을 각각 unselectedselected로 지정합니다

💡 이 맥락에서 unselected와 selected의 용도는 무엇인가요?

이를 사용해 선택된/선택되지 않은 영화 인스턴스를 강조합니다. 두 변수의 값이 일치하면 선택 효과를 볼 수 있습니다. 값이 일치하지 않으면 선택 해제 효과가 표시됩니다.

  d. selected 조건을 selected_number = movie_number로 설정합니다.** **그런 다음 unselected 조건을 **selected_number ≠ movie_number **로 설정합니다


Add two conditions under the Receive trigger

  e. unselected 조건 아래에 unselected response를 추가합니다. 예를 들어 border stroke의 불투명도를 0으로 설정합니다. 그런 다음 selected 조건 아래에 selected response를 추가합니다. 예를 들어 border의 불투명도를 100으로 설정합니다. 필요한 효과를 추가하여 원하는 대로 selected 및 unselected response를 사용자 지정할 수 있습니다.


Add responses under the conditions

  f. 이제 메인 씬으로 이동합니다. 미리보기 모드에서 오른쪽 및 왼쪽 화살표 키를 누르면 movie 인스턴스의 선택 및 선택 해제 효과를 볼 수 있어야 합니다. 하지만 씬이 시작될 때 movie 1 인스턴스는 자동으로 선택되지 않습니다.

  g. 메인 씬에서 Start trigger를 추가합니다. 그런 다음 start trigger 아래에 detect trigger와 동일한 Send response를 추가합니다. 이제 씬을 미리 볼 때 movie 1 인스턴스가 자동으로 선택됩니다.


In the main scene, add a Start trigger

 3. 메인 씬에서 Thumbnail 컴포넌트가 메시지를 받도록 합니다. (Movie 컴포넌트와 동일합니다)

  a. Thumbnail 컴포넌트에서 새 변수를 만들고 이름을 selected_number로 지정합니다

  b. Thumbnail 컴포넌트에 Receive trigger를 추가합니다. 메시지를 selected로 설정합니다. Assign to Variable 옵션을 체크합니다. 그런 다음 할당할 변수를 selected_number로 설정합니다

  c. Receive trigger 아래에 두 개의 조건을 추가합니다. 두 조건의 이름을 각각 unselectedselected로 지정합니다

  d. **unselected **조건을 selected_number ≠ movie_number로 설정합니다. 그런 다음 selected 조건을 selected_number = movie_number로 설정합니다

  e. unselected 조건 아래에 unselected response를 추가합니다. 예를 들어 Thumbnail 컴포넌트의 불투명도를 0으로 설정합니다. 그런 다음 selected 조건 아래에 selected response를 추가합니다. 예를 들어 Thumbnail 컴포넌트의 불투명도를 100으로 설정합니다.


Add responses for both conditions

4. 선택한 콘텐츠를 씬으로 스크롤하기

시작하기 전에 모든 movie 인스턴스가 스크롤 컨테이너 안에 있는지 확인하세요.

 1. selected_number ≥ 3일 때 조건 추가하기

  a. 메인 씬에서 Detect Trigger 아래에 새 조건을 추가합니다. 그런 다음 조건을 selected_number ≥ 3으로 설정합니다

💡 왜 ≥ 3인가요?

목록의 처음 두 movie 인스턴스는 화면에 완전히 보이기 때문에, 스크롤은 3번째 movie 인스턴스부터 발생하도록 하려는 것입니다.

  b. 조건 아래에 **Scroll **트리거를 추가합니다. Scroll trigger가 메인 씬의 Scroll Container를 스크롤하도록 설정합니다

  c. Scroll trigger의 스크롤 모드를 Scroll To로 설정합니다. 그런 다음 Scroll trigger의 값을 다음 수식으로 설정합니다: 686+(selected_number-3)*802


Add the condition when selected_number ≥ 3

💡 수식 이해하기 686+(selected_number-3)*802

값은 프로토타입에 따라 달라질 수 있습니다.

이 맥락에서 값 **686 **은 스크롤 컨테이너 안에 있는 3번째 카드의 현재 X 위치와, 화면에 보여야 하는 여백이 있는 카드의 X 값 사이의 차이를 의미합니다.

이 686의 차이를 사용하여 3번째 영화 카드부터 얼마나 스크롤할지 알아냅니다.

하지만 이 값은 4번째와 5번째 카드에는 유효하지 않습니다. 이 카드들을 스크롤하려면 완전한 수식 686+(selected_number-3)*802를 사용합니다. 4번째와 5번째 카드를 스크롤하는 것은 일부만 안쪽에 있고 일부는 바깥쪽에 있는 3번째 카드보다 더 쉽습니다. 4번째와 5번째 카드를 스크롤하려면 카드의 너비 + 두 카드 사이의 여백 값만 있으면 됩니다. 여기서 카드의 너비(762) + 여백 값(40)은 802이며, 이것이 (selected_number-3)과 곱해집니다. 따라서 4번째 카드가 선택되면 스크롤될 값은 686+(4-3)*802가 됩니다.

요약하면, 여기서 값 **686 **은 **3번째 **카드의 스크롤 값을 의미하고, *(selected_number-3)802는 **4번째 **및 **5번째 **카드의 스크롤 값을 구하는 데 적용됩니다.

 2. selected_number < 3일 때 조건 추가하기

  a. 메인 씬에서 Detect Trigger 아래에 새 조건을 추가합니다. 그런 다음 조건을 selected_number < 3으로 설정합니다

  b. 조건 아래에 Scroll trigger를 추가합니다. Scroll trigger가 메인 씬의 Scroll Container를 스크롤하도록 설정합니다

  c. Scroll trigger의 스크롤 모드를 Scroll To로 설정합니다. 그런 다음 Scroll trigger의 값을 0으로 설정합니다


Add the condition when selected_number < 3

💡 왜 < 3인가요?

스크롤은 3번째 영화 카드부터 발생하므로, 이를 스크롤 컨테이너의 초기 상태로 다시 되돌려야 합니다. 스크롤의 초기 값은 0입니다. 그래서 트리거 값을 0으로 설정합니다.

축하합니다!

이제 이런 간단한 팁과 트릭으로 TV 컨트롤러를 시뮬레이션하는 방법을 배웠습니다. 직접 한 번 시도해 보세요!

여러분의 멋진 실험을 꼭 보고 싶습니다. 자신만의 프로토타입을 만들고 Twitter 또는 Instagram#MadeWithProtoPie와 함께 공유해 주세요

[도움이 되었나요? 알려 주세요!]