Unreal_Engine🎮/TIL📖

[ Unreal Engine ] TIL 📖 ( 5 )

pseonu 2024. 12. 21. 04:06

DAY 5 블렌더 스페이스와 움직이는 액터
 
액터를 내가 입력한대로 움직일 수 있도록 만들었지만 애니메이션이 첫 모션 그대로여서 어색한 느낌이 들었다. 그래서 이번엔 캐릭터에 애니메이션을 추가해보았다!
 


캐릭터 달리기 애니메이션 설정하기
 

콘텐츠 드로어 우클릭 > 애니메이션 > 애니메이션 블루프린트을 클릭하여 애니메이션 블루프린트를 생성한다.
 

생성한 캐릭터의 AnimGraph에서 A_Bot_Idle 파일을 이용해서 아무것도 하지 않을때의 애니메이션을 적용시킨다.
 

연결 후 적용시키면 아까 기본 모양과 다르게 차렷 자세를 하고 있다.
 

이후 캐릭터의 디테일탭에서 방금 만든 애니메이션 캐릭터블루프린트를 등록해준다.
 
그다음 

블렌드 스페이스를 하나 생성한다.

Speed변수를 하나 만들고 세로축에 넣는다.
이후 Speed가 올라가면 달리기 모션을 진행하도록 에셋 브라우저에서 그래프에 저장한다.

Ctrl+클릭으로 프리뷰가 가능하다. (해당 장면은 Speed가 높은 상태. 달리기 모션을 취하고 있는 모습)

Speed라는 변수를 만들고 아웃풋 포즈에 연결해준다.
 

이후 애니메이션 캐릭터의 이벤트 그래프 에서 이와 같이 작성하였다.
1. Try Get Pawn Owner 노드로 현재 설정된 Pawn을 가져온다.
2. 이를 Is Valid 노드에 넣고 정상적으로 반환되었으면 Is Valid를 타고 간다.
3. Get Velocity 노드를 이용하여 현재 Pawn의 속도를 벡터형식(X,Y,Z)으로 가져온다.
4. Break Vector 노드를 이용해 이전에서 가져온 벡터를 각각의 축(X,Y,Z)으로 분리한다.
5. Make Vector 노드를 이용해 분리한 값으로 새로운 2D벡터 값을 만든다.
6. Vector Length 노드를 이용해 2D 벡터의 길이를 계산한다. 이 길이는 곧 속도이다.
7. 계산된 2D벡터의 길이를 SET 노드를 이용해 Speed 변수에 저장한다. 
 

저장 후 실행해보면 달리기를 할 수 있는 모습 !!
 


캐릭터와 오버랩하면 상태 변화하게 만들기

 
먼저 캐릭터와 오버랩을 하려면 Trigger Volume 이 필요하다.
에셋 블루프린트를 생성해주고 추가 > Box Collision을 추가한 후 맵 뷰포트에 배치한다.

이때 캐릭터가 저 박스 안으로 들어가면 앞에 있는 문이 열리도록 만들어보겠다.
박스를 선택한 후 블루프린트를 열어준다.

블루프린트에서 우클릭 후 Trigger Volume에 대한 이벤트 추가 > 콜리전 > Add On Actor Begin Overlap 을 선택해주고

이렇게 작성했다. ( 오버랩 했을때 문이 사라지도록 => 문을 아예 삭제 or 안보이게하고 관통되도록)
1. On Actor Begin Overlap (TriggerVolume) 노드를 이용해서 오버랩 할 시에 발생하는 이벤트임을 알림
2. RollDoor01_A 은 내가 사라지게 하고싶은 액터
3. 아예 삭제되게 하려면 Destroy Actor 노드를 이용해서 RollDoor01_A를 삭제
4. 안보이게 하고 관통되도록 하려면 Set Visibility 노드를 이용해서 안보이도록 함
5. Set Collision Enabled 노드를 이용해서 충돌이 안되게 설정.
 

 

차 뒤의 Box를 밟고(오버랩) 문이 열린 모습 + 문 안으로 들어갈 수 있는 모습
 
이 예시에 추가로 박스에서 나왔을때 다시 문이 닫히도록 만들었다. 

코드 자체는 Begin Overlap이랑 유사하다. 가시성을 활성화 하고, 충돌을 만들어주면 된다.

이렇게 박스위에서 내려오면 문이 다시 닫히는 상태이다.
 


+) 오버랩 하면 문이 회전되어 열리는 액터 만들기
 

위에서 만든 문 사라지게 하기와 유사하다.
트리거볼륨을 문에 만들고 그 트리거볼륨에 오버랩하면 문이 축을 기준으로 회전하게 만들도록 하면 된다.
 

이번엔 사물이 아니라 사람이 오버랩 할 때만 문이 열리도록 조정할 것이라 다음과 같이 작성해줬다.
캐릭터를 변수로 승격시키고 다음과 같은 노드를 이용했는데 저기서 Cast To BP_NBC_Character 노드는 입력핀 (Get Player Pawn)이 Character인지 확인한 후 해당 타입으로 변환해줍니다. 

 

이후 다음과 같이 작성했는데
1. On Component Begin Overlap (Box) 노드를 이용해서 상자에 오버랩 되면 시작
2. Branch 노드를 이용해서 오버랩 된 액터가 캐릭터인지 확인
3. Add Actor Local Rotation 노드를 이용해서 z축을 기준을 기준으로 -45도 회전시킴.
(Add Actor Local Rotation노드는 액터의 로컬 좌표계를 기준으로 회전을 추가하는데 사용.)
 

이렇게 있던 문이
 

캐릭터가 박스 안으로 들어가면 45도 회전하여 열리게된다.
 
 
 

'Unreal_Engine🎮 > TIL📖' 카테고리의 다른 글

[ Unreal Engine ] TIL 📖 ( 4 )  (0) 2024.12.21
[ Unreal Engine ] TIL 📖 ( 3 )  (0) 2024.12.18
[ Unreal Engine ] TIL 📖 ( 2-2 )  (0) 2024.12.17
[ Unreal Engine ] TIL 📖 ( 2-1 )  (0) 2024.12.17
[ Unreal Engine ] TIL 📖 (1)  (0) 2024.12.16