26.06.24 TIL

김민준
∙∙조회 4

김민준

BP_WraithPlayerCharacter를 가져와서 총알 발사, 히트스캔, 투사체 설정

  1. 우선 BP_WraithPlayerCharcter에서

LeftMouseButton 입력 -> Try Activate Abilities by Tag (Ability Tag는 Primary)

markdown
 * 여기서 Ability Tags가 같은 것 중 Class Defaults의 Initial Abilities에 할당되어 있는 것만 실행 *

  1. (사진 ShootPrimaryAttack 블루프린트 // parent : BP_AbilityBase)

Ability Tags가 Primary인 Shoot Primary Attack 실행

Event Activate ability -> Play Montage and wait -> Shoot Hit Point NBone Projectile (투사체 버전)

 

  1. (BP_AbilityBase에 있는 Shoot Hit Poin NBone Projectile)

BP_AbilityBase에 있는 Shoot Hit Point NBone Projectile 실행 (COL Shoot Hit Scan)

scss
   ->Shoot Hit Point NBone(BP_Third Person) -> Projectile Shoot(BP_Ability Shoot)

  1. (BP_ThirdPerson에 있는 Shoot Hit Point NBone)

  1. (4)에 있는 Get Bone = 총구 위치 찾는 함수

  1. (4)에 있는 Camera Line Trace = 카메라 에서 부터 Hit point까지 Line Trace, Hit Piont의 Location출력

다시 (4)으로 돌아와서

Shoot Hit Point NBone -> Get Bone -> Camer Line Trace

sql
                                                                         ㄴ>Camera Line Trace // (사진 6)

           (start = GetActorLocation , End = Actor Location + Get Actor Forward Vector * Range) 

  1. (3)마지막에 Projectile Shoot실행

(Ability Base에 있는 Projectile Shoot 실행) -> COL_ShootProjectile을 Spawn

  1. (COL_ShootProjectile에 있는 블루프린트)

시작하자마자 총구에서 한발 Shoot

이후 Set Timer By Event로 0.1초 마다 총알 궤도 업데이트

Shoot -> (COL_HitCollision에 있는) Create Multi Sphere로 sphere trace하고 충돌하는 상대에 따라 다른 이펙트 출력, 데미지 입히기 까지 저기 안에 있음

 

  1. (8) Set Timer By Event 뒤에 총알이 위 아래로 왔다 갔다 하면서 발사 되도록 중력 설정 추가

 

 

**총알 particle추가할 때 (이건 히트 스캔 방식일 때) (ShootProjectile는 ShootHitScan 복사 후 수정한거임)

Col_ Shoot Hit Scan에 viewport에 particle추가

Event Tick로 시간 지날 때 마다 ParticleLoop에 DeltaSeconds 업데이트

Custom event - Particle Loop 로 시간에 따라 Get Actor location에서 Hit Point(COL_HitCollision에 있던 변수 Replicated후 가져옴) 로 Lerp-> Set World Location -> Branch 0.6초 뒤에는 총알 사라지게


**총알 투사체로 설정할 때

COL_ShootProjectile에 Viewport에 ProjectileMovement 추가

ProjectileMovement에 Initial Speed, Max Speed 설정

Rotation Follows Velocity 체크 -> 떨어지면 Sphere도 꺾이도록

Gravity Scale 1.0 = 중력 영향 받음