[UE5] 무기 시스템 만들기(무기, 발사체 타입무기, 발사체)
Projectile 방식의 무기와 Hit Scan 방식의 무기는 동작 원리에 따라 크게 차이가 있다. Projectile 방식의 무기는 발사체(
Projectile)를 생성하고, 이 발사체가 일정 속도로 움직이며 목표물에 도달할 때까지 시간이 필요하다. Hit Scan 방식의 무기는 "즉시적인" 충돌 감지 메커니즘을 사용한다.
목차
Component 구조 만들기
CombatComponent
CombatComponent.h
CombatComponent.cpp
Q. UFUNCTION(Server, Reliable)
void ServerFire(const FVector_NetQuantize& TraceHitTarget); 와 같이 서버에 TraceHitTarget을 보내는 이유는?
Answer. 각각의 Client들이 총알을 발사하는 방향을 서버에 알려주기 위해서이다. 서버에서 발사 방향 정보를 얻은 다음 다른 Clinet들에게도 업데이트해서 보여준다.
※ 참고) NetSerialization.h
NetSerialization.h 내에 있는 struct FVector_NetQuantize
- FVector의 상속을 받기 때문에 FVector 매개변수 타입에 넣어줄 수 있다.
- RPC 직렬화(Serialization)에 사용
발사 무기 만들기
Projectile vs. Hit Scan
Projectile 방식의 무기 | Hit Scan 방식의 무기 | |
구현 | projectile spawn 하기 | line trace 쏘기 |
발사체 속도 | 발사체의 속도(velocity)를 정할 수 있다. | 없다. line trace를 쏘기 때문에 바로 물체에 맞는다. |
중력 (Gravity) | 적용 가능 | 적용 불가능. |
파티클 | Tracer particles | Beam particles |
이벤트 | Hit Event | X |
무기 예시 | 화살, 총알, 로켓 |
Projectile 방식의 무기와 Hit Scan 방식의 무기는 동작 원리에 따라 크게 차이가 있다.
Projectile 방식의 무기: 이 방식은 발사체(Projectile)를 생성하고, 이 발사체가 일정 속도로 움직이며 목표물에 도달할 때까지 시간이 필요하다. 즉, 실제 세계의 물리법칙을 따르는 경우가 많다. 예를 들어 화살, 로켓 등이 여기에 해당합니다. 발사체는 그래비티 영향을 받을 수 있으며, 충돌 감지시 피해를 입히거나 특정한 효과를 발생시킵니다.
Hit Scan 방식의 무기: 이 방식은 "즉시적인" 충돌 감지 메커니즘을 사용한다. 즉, 사용자가 발사 버튼을 누르면 게임 엔진은 line trace 충돌 검사를 사용하여 명중 여부를 결정한다. 만약 line trace가 오브젝트와 교차하면 그 오브젝트는 즉시 피해를 입는다. 대부분의 근거리 및 장거리 총기류에서 볼 수 있는 메커니즘이며, 프레임 사이에 걸친 지연 없이 즉각적인 결과를 제공하는 장점이 있다.
Weapon
Weapon.h
Weapon.cpp
ProjectileWeapon 생성
Weapon 클래스의 상속을 받는 ProjectileWeapon 생성
ProjectileWeapon.h
ProjectileWeapon.cpp
BP_AssaultRifle
발사체 할당
- Details - Projectile Weapon
- Projectile Class: BP_Projectile 할당
애니메이션 할당
- Weapon Properties
- Fire Animation: Fire_Rifle_W
총알 탄피 클래스 할당
- Weapon
- Casing Class: BP_Casing
Projectile 생성
Projectile.h
Projectile.cpp
BP_Projectile 생성
발사체의 궤적을 표현할 Tracer 파티클을 넣어준다.
Casing
새 C++ 클래스 - Actor - Casing 생성
각각의 Client는 총알을 local로 Spawn하기 때문에
총알탄피 클래스(Casing)는 Replicated Actor가 아니어도 됩니다.
Casing.h
Casing.cpp
BP_Casing
주의사항 - Muzzle의 방향과 발사체의 방향을 일치시켜줘야 한다.
무기 Mesh
Muzzle의 방향과 발사체의 방향을 일치시켜줘야 한다.
총알이 발사되고 탄피가 빠져나가는 방향을 x방향으로 설정해준다.
발사체 충돌체 (BP_Projectile)
실행화면
'⭐ Unreal Engine > UE Multiplayer FPS TPS + ListenServer' 카테고리의 다른 글
[UE5] 크로스헤어 Crosshair (0) | 2023.10.01 |
---|---|
[UE5] Net Update Frequency 수정하기 (0) | 2023.09.27 |
[UE5] 무기 줍기 - RPC 고려하기 (0) | 2023.09.21 |
[UE5] 플레이어 Role 머리 위에 띄우기 (0) | 2023.09.18 |
[UE] Multiplayer 11: Menu Subsystem 수정하기 (0) | 2023.07.17 |
댓글
이 글 공유하기
다른 글
-
[UE5] 크로스헤어 Crosshair
[UE5] 크로스헤어 Crosshair
2023.10.01 -
[UE5] Net Update Frequency 수정하기
[UE5] Net Update Frequency 수정하기
2023.09.27 -
[UE5] 무기 줍기 - RPC 고려하기
[UE5] 무기 줍기 - RPC 고려하기
2023.09.21 -
[UE5] 플레이어 Role 머리 위에 띄우기
[UE5] 플레이어 Role 머리 위에 띄우기
2023.09.18