언리얼 엔진

UE5) 플레이어 물체 발사

zzugest1 2025. 2. 20. 23:08

https://zzugest1.tistory.com/65

 

 

 

이동과 마우스 회전이 가능한 플레이어에서 물체를 발사하는 기능을 구현하고자 한다.

 

 

 

물체를 발사하는 키를 입력하기 위해 입력 액션을 하나 만들어주고,

 

입력 매핑 컨텍스트에 왼쪽 마우스 버튼을 지정해준다.

 

그 다음 발사할 물체를 블루프린트 클래스로 액터(이름은 Bullet)를 만들어준다.

 

 

Bullet의 컴포넌트에서 Sphere와 발사체 무브먼트 컴포넌트(ProjectileMovment)를 만들어준다.

 

 

그 다음 Sphere의 디테일 창 -> 머티리얼에서 원하는 색깔 머티리얼로 바꿔준다.

 

 

그리고 발사체 무브먼트 컴포넌트의 디테일 창-> 발사체 부분에서 초기, 최대속도를 임의로 맟춰주고 발사체 중력 스케일을 0으로 만들어준다.

 

Character 클래스의 이벤트 그래프로 들어가 InputShoot(왼쪽 마우스 클릭)시 행동을 만들어 주면 된다.

 

 

InputShoot을 검색해 만들어주고 SpawnActor Bullet을 검색해 Started와 연결해준다. SpawnActor Bullet의 Class 부분을 만들어놨던 Bullet 클래스를 선택하면 왼쪽 마우스 클릭시 Bullet을 Spawn한다는 뜻이다. 

그 다음 Bullet의 Location, Rotation, Scale을 지정해줘야 Bullet이 Spawn되는데 이를 Get Actor Transfrom을 이용해야 한다. Get Actor Transform는 Target이 되는 액터의 위치, 회전, 스케일의 정보를 얻는다는 뜻이다. Get Actor Transform은 위치, 회전, 스케일의 정보를 동시에 가지고있으므로 SpawnActor Bullet에 연결하기 위해 이 세개를 분리해야한다. 이걸 Break Transform을 이용해 분리해서 이어준다.

 

이렇게 Get Actor Transfrom을 이어주면 Bullet이 Spawn되어 앞으로 나가는 것을 볼 수 있다.

 

 

하지만 Bullet이 상자안에서 발사되는 것을 볼 수 있다. 상자 앞에서 발사되는 것으로 바꾸려고 한다.

 

GetActor Forward Vector는 Target의 정방향 벡터를 얻는 것이다. 여기에 임의의 숫자를 곱해 정방향 벡터를 늘린다. (이 숫자가 커질 수록 더 앞에서 발사) 이를 Location에 더해 Bullet의 Location을 이어준다.

 

그럼 다음과 같이 상자 앞에서 발사하는 것을 볼 수 있다.

'언리얼 엔진' 카테고리의 다른 글

UE5) 플레이어 점프 구현  (0) 2025.03.06
UE5) 플레이어 애니메이션  (0) 2025.03.05
UE5) 총알 충돌 구현  (0) 2025.02.21
UE5) 플레이어 방향 설정  (0) 2025.02.19
UE5) 플레이어 생성  (0) 2025.02.18