Unreal

[Unreal] 4월 4일 수업정리

k-codestudy 2025. 4. 4. 14:42
오늘은 점프대를 만들어 보았다
 

점프력을 건들여 만드는 점프대

발판에 들어가게 된다면 z Velocity값을 1500으로 설정하고 나가게 되면 원래 값으로 복귀 ( 버프 형식 )

커스텀 이벤트를 이용하여 각각 z Velocity값을 1500(오버랩 시), 700(오버랩이 끝날시)으로 설정
오버랩시 bp_ThirdCharacter를 확인하고 맞다면 use-jump 실행 / 오버랩 종료시 bp_ThirdCharacter를 확인하고 맞다면 end-Jump 실행

Add Impluse를 이용한 점프대

AddImpulse vs AddForce 차이점 

적용 방식 순간적으로 (한 프레임에) 힘을 가함 매 프레임 누적적으로 힘을 가함 (지속적으로 밀어줌)
물리 의미 운동량 (Impulse) = 힘 × 시간 힘 (Force) = 질량 × 가속도 (F = ma)
사용 목적 갑작스러운 튕김, 발사, 폭발 효과 등 중력, 바람, 꾸준한 밀기 등 지속적인 힘을 표현할 때
프레임 간 누적 여부 한 번만 적용됨 → 반복하려면 매 프레임 호출 필요 계속 호출되는 동안 효과 누적
대표 사용 상황 총알, 캐릭터 날리기, 터지는 물체 물체 끌기, 바람 효과, 중력 커스터마이징 등
자동 질량 반영 질량에 따라 실제 적용값 자동 조정됨 마찬가지로 질량에 따라 자동 조정됨
대표 함수 시그니처 AddImpulse(FVector Impulse, ...) AddForce(FVector Force, ...)

BP_ThirdPerson이 오버랩이 되면 Charactor Movement가 타겟으로 Add Impulse를 이용하여 z값을 1500으로 주고 Velocity Change를 체크한다

  • Vell Change : Vell Change를 꺼진채로 작업한다면 무개에 따라 충격량이 상쇄된다

Capsule Component가 타겟
Capsule Component가 타겟으로 설정 시 뜨는 오류

원하는 위치로 날려보내는 점프대

 

Target Point : 특정 지점의 좌표값만 얻어올수 있는 엑터
오버랩 시 BP_ThirdPersonCharater을 확인하고 맞다면 Suggest Projectile Velocity Custom Arc 에 각각의 위치 정보를 따오고 ( Get Actor Loacation을 이용하여 시작위치는 캐릭터의 위치, 종료 위치는 Target Point ) Launch Character을 이용하여 타겟으로 발사

 

캐릭터에 물리력을 가하고 싶을 때

  • 기본적으로 캐릭터 움직임(Character Movement) 컴포넌트가 물리를 직접 제어하고 있기에 단순히 물리 힘을 가해도 적용되지 않음
  • 캐릭터에 물리 발사를 하고 싶다면 LaunchCharacter() 함수 사용해야 함

LaunchCharacter() 의 핵심 특징

  • 다음 틱(Next Tick) 즉, 호출 직후에 바로 적용되지 않기 때문에, 그 다음 프레임에서 효과가 나타남
  • 그래서 LaunchCharacter() 뒤에 위치 조정 등을 해도 반영이 안 될 수 있음

Custom Arc 파라미터

  • 특정 곡선(포물선)을 따라 캐릭터를 날리고 싶다면, 아크 관련 파라미터를 조절
  • Arc Parameter 값이 낮을수록 고각, 높을수록 직선 형태로 날아감

LaunchCharacter() 오버라이드 필요

  • 발사 시 원하는 방향과 세기를 명확히 적용하려면 오버라이드 방식 사용
  • 이전 힘이 남아있으면 불안정하게 날릴 수 있으므로, 명확히 기존 힘을 덮어씌워야 깔끔하게 발사됨

왜 안 날아가는가? (문제 상황 분석)

  • LaunchCharacter() 적용 후 캐릭터가 정점까지 날아가고 내려올 때 x, y 방향 힘이 사라지는 현상 발생 이는 캐릭터 움직임 컴포넌트의 설정 때문
  • 예: "Falling 상태에서 속도 감쇠" 옵션 활성화 -> 중력이 계속 적용되고 있음 -> 움직임에 영향을 줌
  • 점프 관련 파라미터 중 Falling 속도 조절값이 있음 -> 0으로 설정하면 중력 영향을 줄일 수 있음

플레이어가 조작하면?

  • 발사 중 플레이어가 입력을 하면, 캐릭터 움직임이 우선되면서 발사가 중단될 수 있음
  • 완전한 발사를 원하면 입력을 일시적으로 차단하거나 무시해야 함

상태 백업 필수

  • 캐릭터의 기존 상태를 발사 전에 백업하고 발사 중에는 물리 설정 변경
  • 발사 후에는 원래 상태로 되돌리는 처리 필요
  • 문제: "언제 원래 값으로 되돌릴 것인가?" → 조건 명확히 설정 필요

가장 단순한(무식한) 방법

  • 발사대에 닿는 순간 캐릭터의 모든 움직임을 정지
  • 이후 일정 시간 동안 강제로 발사 상태 유지
  • 시간이 지나면 원래 상태로 복구
  • 예: LaunchDuration을 지정해서 그 시간 동안 조작 불가 & 설정 유지

 

 

'Unreal' 카테고리의 다른 글

[Unreal] 4월 8일 수업정리  (0) 2025.04.09
[Unreal] 4월 7일 수업정리  (0) 2025.04.07
[Unreal] 4월 3일 수업정리  (0) 2025.04.03
[Unreal] 4월 2일 수업정리  (0) 2025.04.02
[Unreal] 4월 1일 수업정리  (0) 2025.04.01