프로그래밍 공부
작성일
2024. 2. 2. 17:01
작성자
WDmil
728x90

공격이벤트에 칼에 따라다니는 선을 하나 그어보자.

트레일 이벤트를 커스텀으로 가볍게 만들 것 이다.

 

우선, 이팩트를 만들기 위해 머티리얼을 한개 제작해준다.


머티리얼 커스텀

머티리얼을 커스텀 할 것 이다. 우선 파티클 컬러를 생성하고, 해당 컬러에 필터를 씌워서 알파값을 조정할 것 이다.

TextureCoordinate를 생성한다. 이 블루프린트는 일정좌표로 계산되어  UV값의 위치를 조정하는 역할을 한다.

적용하는 텍스처의 UV값을 조정하여 어떠한 값 기준으로 블렌딩하는데 이용된다.

 

ComponentMast를 추가한다. 이것은 RGB중 사용자가 지정한 Color값을 Mask하여 가려버리는 효과가 있다. 즉, 해당 Color값은 A값이 0이된다.

 

마스크를 위와같이 지정해보자.

UV좌표값이 구체를 기준으로, X와 Y축이 Color값의 R과 G에 해당하는 색으로 표현됨을 이해할 수 있다.

 

이제 여기서 G값을 마스크하면, TexCoord로 블렌딩되어있는 R과 G에서 G만 사라지게 된다.

 

이걸 A값에 적용하면, 이제 이 머티리얼에서 Texture의 UV는 방향이 생성좌표를 기준으로, 뒤로갈 수록 투명해지게 조정될 것 이다.

 

위와같이 머티리얼이 조정된다.

 

이 머티리얼을 확인해보면 쉽게 이해할 수 있다.

Color의 A값이  G가 마스크되었음으로, 구체형태로 퍼진 Texture가 생성위치부터 외곽선까지 점점 연해지게 된다.

 

칼을 휘두르면 이펙트가 뒤로갈 수록 연해지지 않는가? 해당 머티리얼의 텍스처를 표현하였다고 이해하면 된다.

 


머티리얼 적용하기

일단, 이렇게 만든 머티리얼을 인스턴스 화 하여 변경할 수 있게 해준다.

 

여기서 Color값을 변경하여 우리가 사용할 것 이다.


파티클 생성

 

파티클에서 머티리얼을 사용할 것 이다.


파티클 에 머티리얼 인스턴스 적용하기

대강 위와같은 창이 나타남을 확인할 수 있는데,

 

여기서 우리는 머티리얼을 적용하기 위해 Required를 누른다.

여기에서 만들었던 머티리얼을 적용하면 된다.


세부설정

Spawn -> 버스트 -> Constant를 1로 변경한다. 0으로 되어있으면 이펙트가 나타나지 않는다.

위로 올리면 나타나는 Distribution객체를 전부 Float Constant로 설정한다.

 

각 Distribution은 상수, 곡선, 값분포(범위무작위분포), 값분포(범위 균일분포), 값분포곡선(범위 균일분포 곡선)
에 따라 값의 길이나 투명도가 변하는 것을 의미한다.

 

LifeTime을 누르면, 생명시간을 설정할 수 있는데, 생명시간은 선형감소로 설정하고, minMax를 동일하게 하여 무작위값분포가 일어나지 않게 한다.

Color값은 원하는대로 수정해준다.

 

물론, 색도 무작위 또는 선형으로 변환할 수 있다.


이펙트 적용하기

 

이펙트 적용은 간단한데,

칼에 적용해도 되고, 애니메이션에 적용해도 된다.

 

우리는 애니메이션에 적용해본다.

몽타주섹션으로 이동해서, 이펙트를 적용할 몽타주에 들어간다.

 

그리고, 일정 시간동안 생성되는 간단한 이펙트를 표현하기 위해 이펙트의 소켓을 준비해준다.

 

칼을 만들때와 같은 방식으로 소켓을 생성해준다.

대충 스켈레톤에서 Trail을 Start와 End로 소켓을 만들어주면 된다!.

 

이제, 에니메이션을 들어가서, 노티파이스테이트-> Trail을 생성해서, 내가 원하는 범위에 이펙트가 생길 수 있도록 조정해준다.

위와같이, 공격을 시작할때, 칼을다 휘둘렀을때 종료하게 한다.

 

그리고, 소켓과 이펙트를 추가해준다.

Trail을 눌러주면 나타난다.


테스트

 


애니메이션 노드 정리하기

 

지금까지 만든 애니메이션 노드는 매우 불편하고 너무 Bool변수를 많이 사용하였다.

ABP가 조졌다는의미이다.

 

좀더 직관적이고 관리하기 편하게 바꾸어보자.

일단 기본 개념은 같다.

 

이번에 우리가 수정할 것은 칼을 뽑고, 칼을 넣고, 점프하는 애니메이션을 조정할 것 이다.

 

우리가 연결했던 노드들을 전부 잘라내어 관리할 것 이다.

 


기본모션

기본모션에서 애니메이션 블랜딩을 적용한 모습이다.

이벤트 창에서 마우스 오른쪽클릭 -> 블렌드 포즈( 우리가 설정한 enum의 이름 ) 을 하면 불러올 수 있다.

 

이렇게 해놓으면, enum에 따라 애니메이션의 적용여부가 바뀌게 된다.

 각 내부구현은 다음과 같다.

즉, 모든 모션을 과정에 따라 잘게 자른다고 이해하면 된다.

 

모션의 종료여부는 노티파이를 통해 전달하고, 전달전에는 애니메이션을 재생하는 식이다.

Enum을 통해 칼을 뽑고 공격하고 내리는 과정동작을 관리하기 때문에 ABP에서 이렇게 사용해도 무방하다.

칼을 든 모션도 마찬가지로 만들어 놓는다.

칼을 든 모션, 이동모션 을 블렌드스테이트로 만들어놓고, 칼을 내리는 모션만 따로 정의해놓는다.

 

그리고 SavePose를 통해 SwordPose라명명한다.

각 모션의 SavePose를 이용한 CombatPose를 정의한다.

 

기본모선 , 칼을든 모션 . 마법을 사용하는 모션 이 자연스럽게 전환되도록 사용한다.

 

이제 이렇게 나타난 COmbatPose를 Jump에서 관리해준다.

이렇게 하면 모든 모션에서 Jump 동작을 수행할 수 있게 된다.

그리고 나머지 모션을 레이어블랜딩 하게 되면, 몽타주 실행시 에도 자연스럽게 모션들이 이어지게 된다.

 

테스트 결과는 같다.

728x90