기본 콘텐츠로 건너뛰기

250402 Map Ranged Clamp, Delta Lerp, Interp, Random, Spline

Map Ranged Clamp

BP_Actor의 위치와 Character의 위치를 비교해서 그 만큼 회전을 설정한다.

In Range A~B(최소 최대)의 값을 Out Range A~B(최소 최대)의 값으로 환산해서 돌려준다.



Delta

Tick으로 부터 Delta Seconds를 가져올 수 있다.

Tick과 Tick 사이의 시간으로, 뷰포트 Show FPS의 하단 시간이 Delta Seconds이기도 하다. 


Lerp

Root component에 ArrowComponent를 추가하고, 뷰포트에서 위치를 지정함으로써 더 자유로운 위치에서 왔다갔다 하도록 만들 수 있다.

Set Player Rate 는 Timeline의 시간이 지나는 속도를 조절할 수 있다.

Interp To

Current: 현재 위치, Target: 이동할 위치

Interp Speed의 속도로 Delta Time (Tick)마다 이동을 한다.

Interp Speed가 0 이면 즉시 이동.

Delta Time은 Tick에서 가져오고, 사용 시에 Tick과 연결해야 정상 작동한다.

GetWorldDeltaSeconds를 통해서도 사용할 수 있다.



Event 트랙을 2개 이용해서, Looping이 False일 경우 각 Arrow위치에 도달 했을 때, 해당 지점에서 플랫폼을 멈추는 것을 사용하고 있다.

Move Platform함수가 타임라인의 Update를 사용하기 때문에, 처음부터 실행되는 게 아니라 Stop이후로부터 실행되어 왔다갔다 하게 된다.


점프 발판
Launch Character를 이용. XY, Z Override를 하면 값을 더하는 게 아니라 값을 넣어버림.

Random

Random Bool : 참 거짓이 랜덤

Random Bool With Weight : Weight가 1에 가까우면 True가 더 많이 나오는 랜덤

Random Float/Int

Random Float : 0~1.0 랜덤 실수

Random Float in Range : Min~Max 랜덤 실수

Random Integer : 랜덤 정수

Random Integer in Range : Min~Max 랜덤 정수



Random Rotator

lerp의 Shortest Path를 이용하여, 각도 변경 시에 발생하는 떨림 현상을 방지 할 수 있음.


RInterpTo를 이용해서 회전의 변화를 표현해줌.


Random Bound Box
Center로부터 Half size의 2배만큼의 XYZ 크기를 가진 정육면체 범위 안의 랜덤.



플레이어 위치로 오는 Coin 만들기
Cylinder 메쉬의 충돌연산을 OverlapAllDynamic 으로 해서, 플레이어를 막지 않도록 하고,
플레이어가 근처에 오는 것을 판단할 수 있는 Sphere Collision을 만든다.

SphereCollision 범위 안에 플레이어가 들어오면 VInterp To, Set Actor Location을 통해서 따라오도록 만든다.
Tick을 사용하면서 Character를 변수화 했기 때문에, 플레이어가 없을 때 이동하지 않도록 하기 위해 Is Valid를 이용해서, 존재하지 않을 때 작동하지 않도록 한다.

그리고, Cylinder메쉬 또한 BeginOverlap을 이용해, 플레이어 캐릭터와 충돌 했을 경우, 사운드를 재생하고 사라지도록 만든다.



Random Cone
Random Unit Vector Cone in Degree
ConeDir : 원뿔의 방향 벡터
Half Angle : 원뿔의 절반 각도
해당 벡터 방향으로 SpawnActor와 AddForce를 통해 원뿔의 형태로 공이 나간다.

여기서는 TimeLine에서 -1~1값을 넣고 Cone Dir X에 값을 넣어 X값이 -1~1을 왔다갔다하는 형식이 된다.

Spline
일종의 곡선으로 각 포인트로 구성되어 있어서 해당 위치에 따라, 선이 만들어진다.
포인트에 Alt+ 마우스 이동으로 선을 추가할 수 있다.

Get Spline Length 스플라인의 총 길이를 가져옴
추가할 메쉬의 숫자인 count 변수를 만들어서, 스플라인의 거리를 숫자로 나눈다.
그리고 Get Location at Distance Along Spline 과 Get Rotation at distance Along Spline
를 사용하면, 스플라인의 길이를 이용해서 해당 지점에 위치, 회전값을 얻을 수 있다.

여기에 Add Static Mesh Component를 통해 스태틱 메쉬를 추가해준다.
추가로 Set Static Mesh를 더하고, Mesh를 Public으로 바꾸어서 에디터 상에서 바꿀 수 있도록 한다.


타임라인 Move는 0~1로 되어 Lerp의 Alpha에 넣으면, A에 0 B에 스플라인의 길이를 넣어서 스플라인의 해당위치의 길이 *0~1.0으로 사용하려고 한 것이다.

Get Location at Distance Along Spline에 해당 값을 넣어 위치 값을 받아오고 이를 SetWorldLocation에 넣어서 Spline을 따라 움직이게 된다.





이 블로그의 인기 게시물

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...