기본 콘텐츠로 건너뛰기

250410 first person

달리기




조준점
플레이어의 위젯 관련해서는 Controller에서 관리하는 게 좋다.

물리 관련한 처리를 위해서 전용 Engine 액터를 만든다.
PhysicsHandle만 추가한다.

플레이어에서 변수로 만들고, 블루프린트를 통해 액터를 설정해준다.



Update Physics Handle
여기서 사용할 Player의 카메라, 타깃을 설정해주고 있다.

Grab
Trace를 통해 위치를 찾는다. 거기에 







Throw
플레이어 Camera의 포지션
Release C



Scroll

물체를 잡았을 때, 거리를 조절 할 수 있도록, 잡은 물체와의 거리 값(HandleDistance)를 변경
Trace Start와 Hit Component의 World Location만큼의 거리를 거리 값으로 설정.

마우스 스크롤 값을 통해서, Clamp한 값 만큼까지 물체와의 거리를 조절할 수 있게 한다.

Return Node를 추가해서, Trace 체크와 Grab을 분리하여 만든다.
Return Node에 반환할 값은 우측의 Output에서 추가하거나 다른 블루프린트에서 끌어다 넣으면 된다.

추가로 Is Simualting Physics설정이 되어 있지 않으면 동작을 안할것이므로 체크해주자.

Drop
그대로 물체를 내려놓기 위해서 IsHelding이라는 변수를 추가해준다.
Throw에서 False로 설정해주고, 잡을 때 True로 설정 해주면 된다.
Release Component만 사용해주면 된다.

Branch를 통해, IsHelding의 True, False값을 확인해서 잡거나 놓을지 결정한다.

Physics
Simulate Physics 물체가 물리 영향을 받을 것인가
Mass 무게
Linear Damping : 선형 저항 (마찰력)
Angular Damping : 회전 저항


BluePrint Interface
일종의 가상 함수.
만들어서 다른 블루프린트에 추가하여 재정의 하는 방식으로 사용한다.

간단하게 Interaction, DropItem이라는 함수를 하나 만들고 저장한다.

클래스 세팅의 우측의 Implementd Interfaces에 추가해준다.
추가되었다면 좌측에 인터페이스 함수가 생긴다.

다음과 같이 인터페이스를 하나 만들어서 버튼을 누를때마다 Update가 실행되도록 한다.



앞서 설정한
Trace에 Actor인 경우에 인터페이스가 동작하도록 하자.



Create Child Blueprint Class를 통해 BP_Button_Kiosk라는 자식 블루프린트를 만들어준다.
두 액터를 배치해서 확인하면 동일하게 머티리얼을 바꾸는 것을 볼 수 있다.

여기서 알 수 있는 것은, 따로 정의하지 않아도 부모의 인터페이스를 사용한다는 것.
거기에 추가로 재정의해서 사용할 수 있다는 점.

그리고 DropItem처럼 어떤 함수를 선언하고 사용하지 않아도 문제가 생기지 않는다는 장점이 있다.



문 여닫기
동일한 부모로부터 오버라이드를 이용한다.

State On과 StateOff가 위에서 정의되어 있으므로 문이 열리고 닫히게 된다.

앞서 만든 문 블루프린트를 그대로 복사하고, 박스 콜라이더를 하나 추가하고
충돌에 의한 호출을 통해서 자동문을 만든다.



아이템 얻기
인터페이스에 GetItemEquip를 추가하고, Inputs에 Scene Object를 하나 추가해준다.

BP_Engine에 Scene오브젝트를 하나와 아이템이 추가해주고 아이템과의 충돌 연산을 할 콜리전을 하나 추가한다.
여기서 범위안에 있는 BP_Item이 콜리전 범위 안에 들어와 있을 경우에 Interface인 Get Item Equip가 실행되도록 한다.


플레이어는 Input을 받아와서 해당 함수를 실행한다.

인터페이스 에서는 Lerp를 이용해서 아이템의 위치에서 Scene의 위치로 이동하도록 한다.
타임라인을 0-1로 해서, 끝까지 이동하면 해당 아이템을 없앤다.



Map 사용해서 아이템 장비하기



그리고 1번 누르면 아이템이 장비된다.

아래를 따르면, 타임라인에 의해 BP_Item이 플레이어 한테 따라오고, 아이템이 Map에 존재하는지 확인하여 True로 바꾸고, 제거된다.



여러 장비 아이템 바꾸기

Enum을 하나 만들어서 바꿀 장비의 이름을 넣어준다.

매크로는 한클래스 안에만 가능하므로 주의
매크로를 만들어서 해당 스트링이 존재하는지 확인한다.

확인해서 참이라는 결과가 나온다면, ChangeEquip가 된다.





이 블로그의 인기 게시물

250523 PCG 2

PCG Building Volume Sampler를 사용할 경우 Voxel Size를 맞추어주자. 2m길이를 Transform Points로 Offset을 이동시켜 Difference를 통해 메쉬를 생성한다. 사용시에 Pivot의 위치가 중앙이 아니면 제대로 표현되지 않을 것이다. PCG Landscape Landscape 생성후 PCG Volume 생성. Get Landscape Data - Surface Sampler 안보인다면 Generate Surface Sampler 일반 그리드 패턴으로 서피스 데이터에 포인트를 샘플링합니다. 이 노드에는 다음과 같은 옵션이 있습니다. 포인트 규모(Point Extents) : 서피스의 기본 그리드 셀 크기를 정의합니다. 여유(Looseness) : 변형 가능한 셀 크기를 정의합니다. 실제로 셀 크기는 포인트 규모 * (1 + 여유)입니다. 제곱미터당 포인트(Points Per Square Meter) : 유지되는 셀의 비율을 계산합니다. 이 프로퍼티는 그리드가 클 때 과잉을 제한합니다. Looseness : 기본 1. 0일경우 Extent의 길이 만큼, 1일경우 2배가 됨.  Attribute Filter를 생성하고, Material에 해당하는 Layer를 찾아서 이름을 넣어준다. Type을 Float로 하고 Float Value를 설정하면, 해당 머티리얼이 색칠된 정도 0~1에서 Operator에 의해 >(초과) 0.6초과 일 경우만 생성되게 할 수 있다. 값을 1로 하고 Equal을 이용해서 1인 경우만 생성되게 하는 것도 가능하다. plugin Water body lake를 넣으면, 이또한 Spline이라는 것을 알 수 있다. 따라서 Get Spline Data-Spline Sampler를 통해 사용할 수 있다. GetActorData와 Difference를 통해서 Lake내부를 제거해주기 PCG Mesh Mesh Sampler를 쓰기위해 Get Actor Property를 이용하면, 해당 액터가 ...

250604 저장불러오기

SaveGame 블루프린트 생성 Game Instance 생성, Init 오버라이드 AC_Inventory Save Load

250522 Physics2, PCG

Radial Force Actor Force 값을 많이 주어야함. Balloon Mass값과 PhysicsThrust를 이용하거나, Set Physics Linear Velocity를 이용하여 Z축 값을 줄 수 있다. Skeletal Physics Physics Material Friction : 마찰력. 수치가 클수록. 덜 미끄러워짐 Restritution : 복원력. 탄성계수 수치가 높을 수록 bouncy Fracture voronoi : Cluster의 숫자 Show Bone Color 해제해주기 Damage Damage Threshold의 값을 수정하는 것으로 강도 조절 가능. Chaos Cache Actor에서 Chaos Cache Manager를 생성 가능. Record 기능이 존재한다. 일단 생성하면 Chaos Cache Collection을 저장하여 사용할 수 있게된다. Cachos Cache Manager를 Simulate를 누르면 저장되고, 실행을 종료하면 그동안의 변화상황이 저장된다. 저장된 Collection을 가져와서 Sequencer의 StartTime으로 가져와 재생할 수 있다. PCG plugin Spline생성후 포인트 하나 지워 줌 우클릭으로 Spline Generation Panel, Square 생성. 처음 지점 포인트 겹쳐있을 수 있으므로 찾아서 삭제해주기 Get Spline Data => Spline Sampler D키 또는 Debug에 체크를 해주고, Dimension 설정을 해준다. On Interior의 경우, Unbounded에 체크를 하면 내부에도 생기게 된다. Static Mesh Spawner Intersection : 교차점 이 부분은 tag가 Spline과 Overlap되어 닿으면 바꾸어 준다. Difference를 이용해 그외 부분은 채워 넣는다. 길 By Class로 설정해주기 On Spline - Distance Extent Radius 설정해주기 Difference를 통해 제외하기 PCG는 A...