총알을 사람이 맞으면 피가 나고, 금속 재질의 물체에 부딪히면 스파크가 튄다.
또한 소리 역시 다르게 나야할 것이다.
이를 구현한 방법은 다음과 같다
* 구현에 앞서
1. 총알의 블루프린트에서 작성한다
- 총알, 폭탄 등 투사체의 종류에 따라서도 반응이 달라야하므로 투사체의 블루프린트에 작성하는게 맞는 것 같다
2. 피격체의 재질 판단은 Materials이 아니라 PhysicsMaterials로 한다
- 모든 Materials 마다 설정을 개별적으로 넣어주는 것은 비효율적일 것이다
- PhysicasMaterials의 용도는 다양하겠지만 여기서는 머터리얼의 그룹화 느낌으로만 사용한다
2022/10/18 수정
* 현재 구현 방법
1. On Component Hit 이벤트 발생 시 Hit (히트 구조체)를 얻을 수 있다.
Break Hit Result를 통해 부딪힌 물체의 Phys Mat을 얻을 수 있는데 기본 설정으로는 아무 정보도 얻을 수 없고, 콜리전 컴포넌트의 디테일 > 콜리전 > 고급 > 이동 시 머터리얼 반환에 체크가 필요
2. 부딪힌 물체의 Phys Mat의 종류에 따라 Spawn Emitter at Location에서 적절한 파티클을 선택해준다.
아직 내가 모르는 방법이 더 있을 것 같지만 현재로서는 위의 Switch 방식으로 구현하기에는 너무 번거로울 것 같고 최적화에는 좋을 것 같지만 아직 프로토타입을 만드는 중이므로 기존의 { 피지컬 머터리얼 : 파티클 시스템 } 맵 자료형을 이용하여 매칭 시켜주겠다.
3. 파티클 이펙트의 방향 설정
총알이 날아온 방향을 향해 파티클 이펙트가 형성되어야한다.
Hit 구조체에서 Trace Start - Trace End 로 총알이 날아온 방향 (총알이 향하는 방향 x)을 구하고 Z축과 정렬한 로테이터를 넣어주면 된다.
* 처음 구현 방법
* 구현 방법
1. On Component Hit
- Hit Component (총알)
- Other Component (피격체)
2. Hit Effect By Phys Mat
- Hit Component의 Location과 Rotation을 통해 총알의 위치와 진행방향을 계산
- 총알로부터 LineTraceComponet를 그리고 검출 대상으로 Other Component를 선택한다. 이를 통해 Hit Location 도출
- Hit Component > Get Material > Get Physical Material로 얻어낸 Physical Material가 PhysMatArray에 속해 있는지 확인 한 후, 해당 인덱스로 ParticleArray에서 적절한 파티클 이펙트를 선택한 뒤 Spawn Emitter at Location으로 이펙트를 생성한다.
(원래는 LineTraceComponent의 PhysMat을 사용하려 했으나 bReturnPhysicalMaterial을 true 설정해야 사용할 수 있는데 블루프린트에서 설정하는 법을 아직 모르겠다)
Hit Effect by Phys Mat
'언리얼 엔진' 카테고리의 다른 글
[언리얼] 캐릭터와 무기 콜리전 세팅 / 시체산 만들기 (0) | 2022.10.18 |
---|---|
[언리얼] 자신의 무기에 콜리전 발생하지 않게 하기 (0) | 2022.10.18 |
[언리얼] 총알이 날아온 방향으로 피가 튀기게 하기 (0) | 2022.10.15 |
[언리얼] TPS 조준 (0) | 2022.10.15 |
[언리얼] 총알과 캐릭터 간의 피격 판정 (0) | 2022.10.14 |