환영합니다
지난 강의에서는 추진하는 함수를 촉진시키는 과정을 다루고
Velocity(속도)가 무엇이며 Speed(속력)와 비교했을 때의 차이를 알아보았습니다
이번 강의에서는 우리가 직접 큐브를 Dissolve(디졸브)시켜 볼 예정입니다
지금까지는 큐브 스스로 Dissolve(디졸브)되며 우리가 제어하지 않았습니다
그리고 이번 강의에서는 그 Dissolve(디졸브) 효과를 활성화시키는 방법에 대해서도 살펴보겠습니다
하지만 캐릭터가 그것을 활성하하려면 한 가지를 알아야 하는데 바로 그 Dissolve(디졸브)에 영향을 주는 게
무엇인지 구분하는 것입니다
에디터로 돌아와 M_Dissolve를 더블 클릭하고 그것의 머티리얼 부분으로
갑니다
코멘트를 작성하면 좋은 이유가 이렇게 노드들로 무슨 작업을 했는지 알 수 있습니다
이건 Dissolve(디졸브)의 패턴을 보여주는 텍스처이며 Add 노드를 사용해
이 텍스처에 값을 더했습니다
그런 식으로 Dissolve(디졸브) 양을 제어했습니다
그리고 큐브가 스스로 Dissolve(디졸브)하는 이유는 이것이 사인 값이므로
두 값을 교대로 사용하기 때문입니다
하지만 그건 우리가 원하는 게 아닙니다
우리가 원하는 것은 수동적으로 값을 바꾸는 것이며 사인을 통해 바꾸는 것이 아닙니다
그러므로 이 핀을 비활성화해주고 코멘트도 필요없기 때문에
이 핀도 비활성화해주고 S를 꾹 눌러 Scalar Parameter(스칼라 파라미터)를 불러옵니다
이것의 이름은
DissolveAmount(디졸브양)으로 지어주고 기본으로 제어될 값입니다
1이라는 값을 넣어주겠습니다
1을 더함으로 머티리얼과 Dissolve(디졸브)하지 않을 것이며 저장해보겠습니다
에디터로 돌아왔습니다
큐브가 스스로 Dissolve(디졸브)하지 않습니다
우리가 Dissolve(디졸브) 양을 제어하고 싶다면 이 머티리얼 인스턴스를 열어주면 됩니다
여기서 -0.5나 -0.7 정도로 Dissolve(디졸브) 양을 줄여주면
큐브가 희미하게 보이는 게 확인됩니다
만약 값을 올리면 큐브가 잘 보입니다
그래서 이 값으로 얼만큼 큐브가 Dissolve(디졸브)되는지를 제어하는 것입니다
그리고 이 값이 재생 중에 제어해야 하는 값입니다
어떤 값이 Dissolve(디졸브)를 제어하는지 알았으니 과제를 하나 드리겠습니다
여러분의 과제는 액터를 기반으로 블루프린트 클래스를 생성하고
그 블루프린트 안 에 큐브를 컴포넌트로써 배치시키는 것입니다
그리고 그 블루프린트 내에서 큐브에 Dissolve(디졸브) 머티리얼을 할당하는 것입니다
여러분이 다루기에 꽤 간단한 과제입니다
그럼 영상을 잠시 멈추고 시도해 보시기 바랍니다
어떠셨나요?
꽤 쉬웠을 것이라고 예상합니다
다시 함께 해봅시다
블루프린트를 하나 더 생성하겠습니다
우클릭을 하여 Blueprint Class, 그리고 Actor를 선택합니다
이것은 BP_DissolveCube라고 짓고 더블 클릭으로 열어주겠습니다
이 블루프린트 안에 컴포넌트를 추가할 것입니다
큐브를 추가하고 사이즈를 조정해보겠습니다
조금만 조정하면 됩니다
조금 작게 조정하겠습니다
다음으로는 Box Collision을 추가해 Dissolve(디졸브) 효과를
촉진시키는 역할을 부여하겠습니다
이 Box Collision에서 Collision Dissolve라고 이름을 지은 Collision Box를 드래그하여
큐브 앞에 두고 Box Extent를 사용해 Y축을 키워주겠습니다
그래야 캐릭터가 오버랩되기 쉽기 때문이며 컴파일해 보겠습니다
이제 필요없으므로 이 큐브는 지워주겠습니다
죄송합니다, Dissolve(디졸브) 머티리얼 할당하는 것을 깜빡했습니다
MI_Dissolve를 선택하면 희미하게 보이는데 이유는
음수의 파라미터 값이 설정되었기 때문입니다
그러니 다시 1로 설정합니다
1보다 0.6이나 0.7로도 충분히 머티리얼을 볼 수 있습니다
Blueprint에서 BP_DissolveCube를 드래그하고 이곳에 배치한 다음 조금 회전시켜
캐릭터가 오버랩할 수 있도록 하며 전체 저장을 합니다
다음은 On Component Begin Overlap을 사용해 이 함수를 활성화시키는 것입니다
지난 강의에서처럼 말입니다
이 기본 이벤트 세 개는 지워주고 CollisionDissolve를 좌클릭한 다음
스크롤을 내려서 On Component Begin Overlap을 선택하고 어떤 종류의 액터가
현재 큐브에 오버랩되고 있는지도 확인할 수 있습니다
드래그하여 Cast to BP_ThirdPersonCharacter를 선택합니다
우리가 원하는 것은 우리가 직접 머티리얼 인스턴스에서 파라미터를 설정하고 바꾸는 것입니다
그러므로 머티리얼 인스턴스를 가줍니다
우리가 다루고 싶은 값은 이 DissolveAmount입니다
머티리얼의 Dissolve(디졸브) 양을 제어하는 값입니다
그 전에 한 가지를 먼저 알아야 합니다
머티리얼 인스턴스의 종류에 대해 확실히 알아야 합니다
지금까지는 하나의 종류만 다뤘으며 이는 Constant(상수) 머티리얼 인스턴스로 Constant(상수)를
고정값으로 사용합니다
우리가 바꿀 수 없는 값입니다
런타임 중에 값을 바꿀 수 없고 재생 중에 파라미터들을 바꿀 수 없습니다
재생이 시작되면 우리는 통제권이 없습니다
파라미터를 바꾸고 싶을 땐 Dynamic(다이나믹) 머티리얼 인스턴스라는 종류를
사용해야 합니다
런타임에만 존재하며 재생 중에도 바꿀 수 있으며 바로 우리가 원하던 것입니다
다시 이벤트 그래프로 돌아갑니다
Dynamic(다이나믹) 머티리얼 인스턴스를 사용하기 위해 우선 생성해주겠습니다
오버랩되는 액터가 캐릭터를 확인하고 나면 핀을 끌어와
Dynamic material instance를 입력해줄 것이고 동일한 입력 값을 요구합니다
첫 번째는 Parent(부모)입니다
Dynamic(다이나믹) 머티리얼 인스턴스를 생성하고 싶지만 어떤 머티리얼을 기반을로 해야 할까요?
기반으로 해야 하는 머티리얼은 MI_Dissolve입니다
이것입니다
그리고 이 두 입력 값들은 각자 기본 값이 있습니다
그러므로 아무것도 넣지 않아도 됩니다
좋습니다
넘어가 보겠습니다
Dynamic(다이나믹) 머티리얼 인스턴스를 생성하자마자 Return (반환) 값이 생깁니다
Return (반환) 값이 익숙하지 않다면 이런 식으로 이해하시면 됩니다
이 값은 Dynamic(다이나믹) 머티리얼 인스턴스를 생성함으로
얻는 결과 값입니다
추후에 그래프에서 더 잘 활용하기 위해 Promote(승격)해주겠습니다
Variable(변수)로 승격하며 이름은 CreatedDissolveMaterialInstanceDynamic으로 합니다
이름이 조금 길긴 하지만 이름으로 모든 것이 설명됩니다
좋습니다, 넘어가 보겠습니다
Dynamic(다이나믹) 머티리얼 인스턴스가 생겼습니다
다음 단계는 큐브가 이 머티리얼을 사용하게 하는 것입니다
이 큐브를 끌어오면 이 클래스 안에 함수가 있습니다
꽤 직설적인 편입니다
SetMaterial(머티리얼설정하기)라는 이름입니다
이 핀부터 연결해주겠습니다
제가 다음으로 진행할 작업입니다
첫 번째 입력 값은 Target(목표)이며 큐브입니다
다음은 Element index입니다
큐브의 머티리얼을 설정하고 싶은데
어떤 Element를 사용해야 할까요?
큐브를 누르고 스크롤을 내리면 머티리얼 섹션에서
Element 0가 보이며 이 슬롯에 머티리얼을 설정하고 싶습니다
이미 Element 0 가 할당되어 있습니다
다음은 어떤 머티리얼을 설정하느냐 입니다
물론 이 CreatedMaterialInstance를 사용할 것입니다
연결해주면 캐릭터가 Collision Box와 오버랩될 때
Dynamic(다이나믹) 머티리얼 인스턴스가 생성되고 큐브는 이 머티리얼 인스턴스를 사용하도록 설정될 것입니다
지금까지는 좋아 보입니다
거의 다 왔습니다
이 머티리얼 인스턴스 안에 파라미터를 설정하고 싶습니다
그러므로 가져와서 핀을 끌어냅니다
Scalar Parameter(스칼라 파라미터)를 설정하면 즉시
파라미터 이름을 요구하는데 여러분을 상기시키기 위해 잠시 MI_Dissolve로 돌아가 보겠습니다
파라미터 이름은 DissolveAmount이며 이것이 우리가 다루고 싶은 파라미터입니다
많은 것들을 할 수 있습니다
런타임 도중 텍스처, 빛나는 색 또는 Brightness(밝기)도 바꿀 수
있습니다
여러분의 선택입니다
하지만 지금은 이것만 바꾸고 싶습니다
그러므로 DissolveAmount를 입력해주겠습니다
하지만 값은 어떻게 설정할까요?
일단 컴파일하고 머티리얼 인스턴스로 돌아가 보겠습니다
큐브가 순식간이 아니라 스스로 조금씩 Dissolve(디졸브)되길 원합니다
고정 값, 예를 들어 -0.4나 -0.5로 설정하면 큐브는
바로 사라질 것입니다
그리고 그런 것을 원하지 않습니다
값이 시간대에 따라 조금씩 바뀌길 원합니다 예를 들어 1에서 -0.5이나 -0.6입니다
그러기 위해 툴이 하나 더 필요합니다
블루프린트에 Timeline(타임라인)이 필요합니다
Timeline(타임라인)은 이렇게 생긴 트랙을 제공합니다
이것으로 1.5초 내에 1에서 -1로 감소하는 값을 갖을 수 있으며 딱 우리에게 필요한
기능입니다
이벤트 그래프로 돌아와서 우클릭으로 타임라인을 추가합니다
그러면 바로 노드가 생성됩니다
DissolveTimeline이라고 이름을 짓고 위로 조금 옮겨줍니다
노드를 더블 클릭합니다
거의 비어있습니다
트랙을 추가하기 위함입니다
좌클릭해서 Float 트랙을 추가하고 중간 선에 우클릭을 하여
Key(키)를 추가합니다
첫 번째 Key(키)의 Time(시간)에는 0을 넣고 옆에 기본 값은 0.7이면 충분할 것 같습니다
두 번째 Key(키)를 추가할 것인데 1.25초 지점에 추가하고 값은
-0.6이면 충분할 것 같습니다
이제 줌 아웃을 하여 이 두 Key(키)들이 보이게 하고 둘 다 선택해서 F를 눌러주면
전체 화면에 채워집니다 그리고 1을 눌러보겠습니다
그러면 선이 둥글어져 커브가 생겼으며 이름은
DissolveTrack으로 수정하겠습니다
이벤트 그래프로 돌아오면 DissolveTrack이 보이며 이 트랙은
값이 0.7에서 음수 값으로 감소합니다 Dissolve(디졸브) 양으로 완벽합니다
이 Timeline(타임라인)을 위로 옮겨주고 이걸 Play도 연결한 다음 Update도 연결하여
Scalar Parameter(스칼라 파라미터)를 설정합니다 그리고 우리가 설정하고 싶은 값은 이 DissolveTrack으로부터 옵니다
컴파일하고 에디터로 돌아가서 캐릭터가 오버랩하도록 하겠습니다
큐브가 Dissolve(디졸브)되는 것이 보입니다
다시 해봅시다
캐릭터가 큐브와 오버랩됩니다
Dissolve(디졸브)로 사라지는 것이 보입니다
그러면 이어서 두 번째 과제를 드리겠습니다
여러분의 과제는 On Component Beign Overlap을 사용해 큐브를 Dissolve(디졸브)하는 것입니다
지금쯤 이 함수의 사용법에 대해 익숙해지셨을 거라 생각합니다
그리고 다음 단계도 도전해 보시기 바랍니다
On Component End Overlap을 사용해 큐브를 복구시키는 것입니다
오버랩이 시작될 때 사용되는 함수가 있다면
오버랩이 종료될 때 사용되는 함수도 있습니다
캐릭터가 오버랩을 종료하면 큐브를 원상 복구하는 것입니다
큐브를 복원하기 위해 어떤 값들을 다뤄야 하는지 생각해 보시기 바랍니다
그럼 영상을 멈추고 시도해 보다가 도움이 필요할 때 돌아오시면 됩니다
어떠셨나요?
성공적으로 큐브를 복원했나요?
어떻게 할 수 있는지 같이 살펴봅시다
지금까지는 캐릭터가 Collision Box와 오버랩되고 나면 이 큐브가 Dissolve(디졸브)되어 사라졌습니다
하지만 다시 Dissolve(디졸브) 효과와 함께 복구시키고 싶습니다
그러기 위해 On Component End Overlap에 접근해야 합니다
CollisionDissolve에서 OnComponentEndOverlap을 선택합니다
동일하게 Cast to BP_ThirdPersonCharacter를 연결하고 Other과도
연결합니다
제가 원하는 동작은 큐브를 복구시키는 것이므로 값을 -1에서
1로 바꿔야 합니다
이 과정을 다시 반복하는 것입니다
Dynamic(다이나믹) 머티리얼 인스턴스를 생성합니다
Promote to Variable(변수로 승격)하고 큐브의 머티리얼을 할당합니다
타임라인을 하나 더 생성하여 재생하고 Scalar Parameter(스칼라 파라미터) 값을 설정하는 것입니다
이 모든 과정을 반복할 수 있습니다
문제 없습니다
하지만 Timeline(타임라인)의 장점은 바로 Reverse(전환) 버튼이 있다는 것입니다
그 효과를 적용하기 위해 이 핀을 Reverse(전환)와 연결하고 컴파일합니다
다시 에디터로 돌아옵니다
재생을 하면 캐릭터가 오버랩될 때 큐브가 Dissolve(디졸브)되어 사라집니다
하지만 오버랩이 종료되면 큐브가 다시 Dissolve(디졸브) 효과와 함께 복구됩니다
제가 원하는 동작을 간단하게 완성했습니다
이번 강의에서는 성공적으로 머티리얼, 즉 Dissolve(디졸브) 머티리얼과의
상호작용을 다뤘고 Dynamic(다이나믹) 머티리얼 인스턴스도 생성해 봤습니다
이 종류의 인스턴스는 Scalar Parameter(스칼라 파라미터)나 다른 파라미터들을 재생이 시작되고 런타임 도중
바꿀 수 있도록 합니다
블루프린트를 사용해 Scalar Parameter(스칼라 파라미터)를 설정하는 법에 대해서도 살펴 보았습니다
수고하셨습니다
다음 강의에서 뵙겠습니다