본문 바로가기

전체 글

(842)
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-3 Aiming PoseAiming 시에 포즈가 다소 이상하기에 이번엔 이를 위한 Aiming Pose를 만들어주자.기존 포즈와 blend를 통한 작업을 해주어야 하므로, 기존 애니메이션을 Cached로 저장해주자. 그리고 에셋 브라우저에서 RMB_AO_CC 를 검색해보면 Aiming 포즈를 취하는 애니메이션을 볼 수 있다.해당 애니메이션을 사용하기 위해 복사본으로 따로 저장하고, blend를 통해 사용할 것이므로 애디티브 기능을 꺼주자.한쪽은 기본이고 한쪽은 애디티브 애니메이션일 때 blend 결과가 비정상적일 수 있다. 이제 스테이트 머신을 만들어서 Aiming에 대한 애니메이션을 설정해주자. 이를 기존 애니메이션과 blend 작업을 해주자. 이 상태로 플레이를 해보면 기존의 사격시 반동 애니메이션이 사..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-2 Aiming Zoom Interpolation현재 줌으로 화면을 전환할 때 화면이 부드럽게 움직이지는 않는다.이번엔 이를 더 부드럽게 줌인아웃이 되도록 수정해보자. 먼저 줌인 했을 때 더 가깝게 보이고 조준점 위치를 줌인 상태에 맞게 위치하도록 관련된 값들을 다소 조정해주었다. 이제 줌인아웃시 부드럽게 전환되기 위한 보간 속도를 선언해주자.그리고 매번 시야값을 얻기 위한 변수도 선언해주었다. 마찬가지로 생성자에서 초기화 해주자. CamerCurrentFOV 값은 마찬가지로 BeginPlay() 함수에서 기존에 설정했던 디폴트 값으로 설정해주자. 이제 Tick 함수에서 매번 현재 카메라의 FOV 값을 얻으며, 이를 목표 FOV 값에 맞게 보간해주자.기본적으로 현재 카메라 FOV 값으로 카메라를 세팅하며, ..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-1 Zooming Field of View 줌 여부에 따라 다른 View를 갖도록 설정해보자.우선 줌 여부 체크를 위한 bool 변수가 필요하다. 이후 해당 값을 생성자에서 초기화해주자.기본적으로 줌을 하지 않은 상태이므로 false가 기본값이 된다. 이제 줌 했을 때와 안 했을 때에 대한 함수가 필요하다. 해당 함수를  액션 매핑으로 바인딩 해주자.이를 위해 우선 매핑부터 만들어주자. 이제 기본 시야와 줌 했을 때 시야를 위한 변수도 선언해주자. 해당 값을 마찬가지로 생성자에서 초기화해주자.줌 했을 때의 시야는 우선 60으로 잡았다. BeginPlay() 함수에서 기본 시야에 대한 값을 FollowCamera 의 시야로 할당해주자. 이후 줌 여부에 따라 바인딩된 함수를 작동시키고, FollowCamer의 ..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 3-23 Smoothing Character Movement움직임을 더 자연스럽게 만들어보자.지금은 멈출 때 갑작스럽게 멈추는 현상이 존재한다. 또한 좌우로 빠르게 움직이는 경우와 같이 특정 상황에서 캐릭터가 덜렁거리는 듯한 모습이 발생한다.이를 위해 먼저 Smooth Time을 설정해주자.그리고 Type은 Averaged로 변경해주었다.(언리얼 4의 경우 smooth Time -> interpolation / Type 기본 Averaged) Jog_start와 Jog_stop 2가지 블렌드 스페이스에 대해 같은 작업을 해주자. 이제 캐릭터가 크게 덜렁거리지 않고 훨씬 부드럽게 움직이는 모습을 볼 수 있다. 그리고 BP ShooterCharater 클래스의 CharacterMovement 디테일 패널을 보면 무브..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 3-22 Jog Stop Blendspace이어서 Jog Stop에 대한 블렌드 스페이스이다.해당 애니메이션도 마찬가지로 left, right, bwd에 대해 stop 애니메이션이 따로 존재한다.똑같이 작업해주자. 컴파일 해보면 이번엔 제대로 적용되지 않고 여전히 jog_fwd_stop 동작이 재생되는 것을 볼 수 있다.이는 멈추는 순간이 더 이상 해당 방향의 속도를 가진 것이 아니라 0의 속도를 가지기 때문이다.따라서 0일 때의 애니메이션이 jog_fwd_stop 애니메이션이 재생되는 것이다. 이를 해결하기 위해서는 0이 아닐 때 직전 Offset 값을 얻어줄 필요가 있다.속도가 0보다 클 때만 따로 값을 저장해주도록 하자. 그리고 Offset 값을 해당 값으로 교체해주자. 이제 애니메이션을 다듬을 차례다. 우..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 3-21 Jog Start BlendspaceJog Start에 대한 애니메이션도 블렌딩 작업이 필요하다.현재 모습에서 좌우로 뛰기 시작하면 다소 어색한 모습을 볼 수 있다.애니메이션을 보면 left, right, bwd 전부에 대한 start 동작이 따로 존재하는 것을 알 수 있다.이를 이용해서 블렌드 스페이스를 만들어주자. 좌우 애니메이션 할당 때와 동일하게 블렌드 스페이스에 배치해주자. 이번엔 JogStart 스테이트에 해당 블렌드 스페이스를 배치해주자. 필요시 기존 애니메이션 복사본을 조금 다듬어주자.여기서는 좌우 시작 애니메이션에 대해 다듬어주었다.
Unreal Engine 4 C++ The Ultimate Shooter Course Section 3-20 Strafing Blendspace이제 좌우 애니메이션을 실제로 할당해보자.우리는 블렌드 스페이스를 사용하여 자연스럽게 애니메이션이 블렌딩되도록 할 것이다.따라서 블렌드 스페이스를 먼저 생성해주자. 해당 블렌드 스페이스를 보면 디테일 패널에 Axis에 대한 세팅을 하는 칸이 존재한다.여기서 우리가 필요한 것은 수평 축이다.해당 값을 OffsetYaw로 하여, -180 ~ 180으로 설정해주자. 수직축은 이름만 할당하고 아직 사용하지 않으니 건들지 않는다. 이제 jog_fwd 부터 할당해보자.앞으로 걷는 경우이니 OffsetYaw가 0일 때여야 할 것이다. 뒤로 걷는 경우도 설정해주자.0과 반대로 180인 경우 뒤로 걷을 것이다.-180, 180 두 케이스 모두에 할당해주자. 좌우측도 할당해주자.각각 -9..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 3-19 Movement Offset Yaw현재 좌우 이동에 대한 애니메이션이 존재하지 않는다.따라서 할당을 해주어야 하는데 이에 앞서서 어떤 상태 일 때 그러한 애니메이션을 할당 또는 블렌딩해야 하는지 알아야 할 필요가 있다.이를 위해 목표 회전 상태와 회전 값, 또 이 둘을 통해 상대적인 회전 차이 값을 얻을 수 있다.이것이 우리의 목표인 Movement OffSet Yaw 값이 된다. 먼저 해당 변수를 선언해주자.해당 작업은 애니메이션을 위한 것이므로 ShooterAinmInstance 클래스에서 하게 된다. 우선 목표 회전 상태를 얻어서 AddOnScreenDebugMessage 함수를 통해 뷰포트에 출력해보자. 이어서 회전 값도 구해서 출력해보자. 해당 값들을 NormalizedDeltaRotator 함..