잔잔이네
article thumbnail

오브젝트에 키를 입력받아 이동 또는 회전을 하는 법을 정리하였습니다.

 

1. 레벨 블루프린트로 이동해보기

2. 블루프린트 클래스를 생성하여 이동해보기

 


레벨 블루프린트

 

키를 입력받는 이벤트를 추가하기 위해 [세팅] - [프로젝트 세팅] - [입력]에서 [축 매핑 +]을 클릭한 후

MoveForward와 MoveRight를 추가합니다.

MoveForward : W 를 입력 받을 때는 1이고 S는 -1입니다.

MoveRight : D는 1이고 A는 -1입니다.

 

 

추가하게되면 DefaultInput.ini에서 확인할 수 있습니다.

 

 

매핑에 입력한 값이 잘 지정 되어있습니다.

 

상단에 [블루프린트] - [레벨 블루프린트 열기]를 하여 레벨 블루 프린트에 움직일 오브젝트(Cube)를 드래그 합니다.

 

 

 

 

우클릭을 하면 블루프린트에 대한 액션을 추가할 수 있습니다.

 

MovSpeed 변수는 블루프린트 왼쪽탭을 보면 변수를 추가할 수 있는데 MoveSpeed를 플로트 타입으로 준 다음 컴파일을 하면 디테일 하단에서 기본값을 지정할 수 있습니다. 기본 값을 0이 아닌 값을 주어 속도를 주어야합니다.

 

축이벤트 - MoveFoward를 추가하고

GetWorldDeltaSeconds는 프레임차이를 보정해주는 역할을 합니다.

GetForwardVector는 전진과 후방을 담당하고

GetRightVector는 좌우를 담당합니다. 좌우 축이벤트를 추가할 때 하단의 블루프린트에서 MoveForward만 빼고 복사한 후에 GetForwardVector를 GetRightVector로 바꿔주면 됩니다. X라는 액션은 * (곱하기) 입니다.

AddActorLocalOffset으로 타깃(Cube)의 위치를 변화시킵니다.

 

만약 '무버블'이어야 한다는 로그가 나온다면 해당 오브젝트를 무버블로 바꿔줘야 합니다.

 

 

 

오브젝트의 디테일의 트랜스폼에 모빌리티를 스태틱으로 되어있으면 무버블로 바꿔줍니다.

 

 

Jump [레벨 블루프린트]

점프보다는 위로 튀어오른다는 느낌이 더 맞는 것같습니다.

스페이스바를 누르면 GetUpVector로 위로 Power만큼 힘을 가하게 되어 Add Impulse로 힘을 가하게 되어 오브젝트가 위로 상승합니다.

 

위의 방식을 적용하여 오브젝트를 발사하는 레벨 블루프린트도 예시로 정리하였습니다.

스페이스 바의 Pressed와 Add Impulse를 연결해주어야합니다.! (다른 예제를 위해 줄을 끊었습니다)

스페이스 바를 눌렀을 때 GetUpVector와 GetForwardVector가 + 되어 방향이 합쳐지게 됩니다. 따라서 45도의 대각선 벡터가 나오고 그 방향으로 Power의 힘을 가합니다. 

이 예시는 물체의 방향 기준이므로 물체가 발사되면서 기준점이 흐트러질 경우 발사 방향이 틀어질수도 있습니다.

이를 방지하고 월드기준으로 앞으로만 힘을 가하기 위해서는 Make Vector를 사용해야 합니다.

 

Make Vector를 사용하면 월드 방향을 기준으로 X, Z가 합쳐진 방향으로 Power의 힘을 가하게 됩니다.

 


블루프린트 클래스

 

 

블루프린트 클래스를 생성하려면 콘텐츠 브라우저에서 [우클릭] - [블루프린트 클래스] - [액터]를 선택하여 새로운 블루프린트 클래스를 생성합니다. 

 

처음에는 DefaultSceneRoot라고 되어있는데 [+ 컴포넌트 추가]를 선택하여 Scene을 생성한후 DefaultSceneRoot에 드래그하면 하단 처럼 덮을 수 있습니다 덮은후 Root라고 이름을 지정합니다.

Root의 자식으로 StaticMesh와 Shape_Cube으로 컴포넌트를 추가합니다. (Shape_Cube은 추가하지 않아도 됩니다.)

StaticMesh의 오른쪽 디테일에서 Static Mesh와 머티리얼을 추가해줍니다.

 

레벨 블루프린트와 비슷한 모습을 하고 있는데, AddActorLocalOffset의 타깃이 self로 조금 다릅니다.

레벨 블루프린트가 아닌 해당 클래스를 생성하여 만들었기 때문에 지정하지 않아도 됩니다.

 

 

완성이 되었다면 블루프린트 클래스를 드래그하면 생성이 됩니다.

 

 


회전

 

회전도 Move와 비슷한 모습을 가지고 있으며 Make Rotator 액션을 추가하여 X, Y, Z 축으로 회전을 줄 수 있습니다.

 

 


키입력을 받고 오브젝트를 이동 또는 회전을 하는 블루프린트에 대해 알아보았습니다.

잘 못된 점이 있으면 알려주시면 저도 배움에 큰 도움이 됩니다. 감사합니다. 

profile

잔잔이네

@잔잔잔잔

🌈

검색 태그