본문 바로가기

Contents Example/1. Blueprint Input

1.3 Physics-driven movement example

 

원형 발판위에 오버랩하면 비행선을 조정할수 있는데 물리적인 효과가 있다 (미끄러진다, 관성효과)

원형 발판은 BP_Button_Dispatch이고 이전 예제와 동일하게 Call Button Pressed함수를 호출한다. 이건 레벨블루프린트에 있다. DefaultPawn을 특정위치로 옮겨주고 BP_UFO_Physics를 포제스해준다. 이후 시네마틱모드로 변경해준다.

BP_UFO_Physics를 보면

construction Script를 보면 AbductionBeam Mesh의

Engine1,2는 파티클 효과이다.

dynamic Material Instance를 만들어 Abduction Beam Material에 저장해주고 있다.

EventTick을 이용해 UFO Top부분을 계속 돌려준다. 이후  Physics Lenear Velocity를 설정하는데

입력 움직임을 이용해 Vector를 만들고 카메라의 Z축만큼 돌려주고 

속도를 곱해 속도벡터에 더한후 Physics Lenear Velocity로 설정한다.

이후 부드러운 카메라워크를 위해 SprintArm, Camera등이 RinterpTo를 이용해 부드럽게 움직이게 해주고 우주선도 카메라축에 맞춰 회전시켜준다.

SpringArm도 RInterpTo를 이용해 바운스를 준다.

camera도 바운스를 주고 액터의 방향도 맞춰준다.

FOV도 FInterpTo를 이용해 바운스를 준다

이예제의 재미있는 점은 이 비행선을 몰고 오른쪽 목장에가서 좌클릭을 하면 빔이 나와 소를 포획하고 목장으로 가서 우클릭을하면 한마리씩 내보낸다.

마우스 클릭을하면 누르면 BeamOn변수가 켜진다.

변수가 켜지면 루프의 마지막에 변수를 체크하는 Branch가 있는데 AbductionBeamTrigger와 오버랩핑된 액터배열을 리턴한다. 감지하고 싶은 액터에 콜리전 프리셋을 잘선택해야한다.  

존재한다면 오버랩핑액터와 우주선간의 방향을 계산해 

SetPhysics Linear Velocity로 속도를 주어 들어올리는 효과를 준다.

빨려올라가는 액터들은 우주선밑 Abduction zone과 오버레이가 발생하면 상승을 멈추고 Abducted actors에 추가된다.

 

오버레이가 일어나면 BeamOn이 true일 경우만 충돌체를 staticMeshActor로 캐스팅후 Physics를 꺼준다. 그럼 상승이 멈춘다.

콜리전과 Visibility를 꺼주고 AbductedActor 배열에 추가해주고 파티클효과를 스폰해준다

우클릭을 하였을경우 AbductedActors배열의 마지막 아이템을 찾아놓고

인터럽트빔이벤트를 불러 빔을 꺼주고 Physics를 켜주고 우주선의 소켓위치에 놔주고 콜리전을 켜주고

Visible을 켜주고 우주선의 방향과 맞춰주기 위해 PhysicsLinearVelocity를 설정해주고

배열에서 제거해준후 아래쪽으로 내려보내기 위해 -0.1을 지정해주고 효과를 발생시켜준다.