본문 바로가기

Unreal/Udemy 강의

(308)
Unreal Engine 4 C++ The Ultimate Shooter Course Section 8-1 Rotate Root Bone현재 캐릭터를 제자리에서 회전 시켜보면 발이 자연스럽게 돌지 않는 모습을 볼 수 있다.이에 대해 수정을 해줄 것이다. 먼저 이를 위해서는 Belica_Skeleton의 root에 대해 먼저 볼 필요가 있다.root는 모든 skeleton의 중심으로, 해당 root를 회전 시키면 캐릭 전체가 회전하는 것을 볼 수 있다.따라서 우리는 이 root를 이용해 제자리 회전을 구현해 나갈 것이다.이는 AnimInstance 클래스에서 진행된다. 이제 root를 회전 시키기 위한 변수들을 선언해주자. 함수도 이어서 생성해주자. Speed가 0보다 크면 움직이는 중이어서 제자리 회전이 필요없으므로 빈칸이다.스피드가 0일 때를 고려하자.우선 현재 캐릭터 Yaw 회전 값과 직전 Yaw 회전 값..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-15 강의 107 ~ 111은 재장전 모션 중에 탄창을 실제로 빼고 장착하는 애니메이션 및 이에 대한 효과음을 넣어주는 내용이다.하지만 재장면 애니메이션 호환 문제로 임의의 다른 Montage를 사용 중이기에 따라하기엔 무리가 있다고 생각되어 강의만 시청하고 실습은 하지 않았다. 임의로 지정하여 탄창 빼고 넣는 부분을 실습하는 것 자체는 가능하지만 사용중인 Montage와 맞지 않아 다소 이상한 애니메이션이 연출될 듯 하여 보류하였다.이에 강의 112부터 다시 작성한다.Pickup Sounds아이템을 주었거나, 장착했을 때의 사운드를 추가해보자.우선 강의 깃허브에서 음원을 다운받아서 큐를 생성해주자. 우리가 사용할 것은 sw_Foley_jump_01_cue와 sw_Wep_AR_Equip_02_cue이다.각각의..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-14 Bind Weapon Name이어서 Weapon Name에 대해서도 바인딩 작업을 해줄 것이다.이번엔 기존 속성을 이용해 바인딩 해주자. 이제 실행해보면 생성자에서 초기화한 이름인 Default로 설정되어있다. 레벨에 배치하면 무기 이름을 설정해주자. 무기 교체시 해당 이름으로 설정되어있는 것을 볼 수 있다.
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-13 Bind Carried AmmoCarried Ammo에 대해서도 바인딩 작업을 해주자. 그리고 로컬 변수로 Carried Ammo 개수에 대한 Text 타입 변수를 만들어 주자. 기존에 만들어둔 Shooter Character를 가져와서 유효성을 체크해준다.그리고 이를 통해 Ammo Map과 Equipped Weapon에 대한 접근이 가능하다.Equipped Weapon은 이어서 Ammo Type에 대해 접근이 가능하고, Ammo Map을 통해서는 FIND 함수를 통해 Ammo Type이 존재하는 지를 체크할 수 있다.Find의 아웃풋은 bool과 integer로 2가지인데 integer 값을 통해 Return text를 세팅하고,bool 값을 통해 Set 가능 여부를 체크하게 된다. Return Tex..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-12 Update AmmoMap이제 AmmoMap을 업데이트 해주는 과정을 만들어주자.먼저 탄창 용량에 대한 변수를 Weapon 클래스에  선언 및 초기화 해주자. 이에 대한 Getter 함수도 생성해주자. 다음으로 FinishReloading() 함수이다.여기서 AmmoMap에 대한 업데이트를 진행하게 된다. 먼저 장착된 무기가 유효한지 체크하고, 해당 무기의 탄약 유형을 확인한다.해당 유형이 AmmoMap에 있는 지를 체크하고, 해당 유형에 대한 총알을 가져오게 된다. 이어서 탄창 용량에서 현재 탄약을 빼서 남은 용량을 체크해준다.이제 남은 용량을 기준으로 AmmoMap을 업데이트 하게 된다. 필요한 부분을 추가적으로 만들어주자.먼저 RealodAmmo() 함수이다. checkf 함수를 이용하여 디버깅을 ..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-11 Reload Continued이어서 리로딩에 대한 작업을 해주자.먼저 기존 ShooterCharacter 클래스의 헤더에 있던 총알 유형에 대한 enum 클래스가 Weapon 클래스에서도 사용해야할 필요가 생겼다.이에 아에 따로 헤더를 생성하여 거기에 총알 유형에 대한 enum 클래스를 선언해주자.Weapon 클래스에서 ShooterCharacter 헤더를 포함시켜도 되긴하지만, 불필요한 내용까지 포함되므로 따로 만들어주자. 그리고 해당 헤더를 포함시켜주면 된다. 새로운 파일이 추가되었으므로 언리얼로 돌아가서 Refresh Visul Studio Code Project를 눌러주자.언리얼에 해당 파일의 존재를 알려줌으로써 인텔리전스 오류가 사라진다. 이제 Weapon 클래스에서 해당 유형에대한 변수 선언 ..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-10 The Weapon Type앞으로 사용될 무기 유형에 대해서 선언해주자.전과 같이 enum 클래스를 통해 Weapon 클래스에서 선언해줄 것이다. 이에 대한 변수 및 초기화도 해주자. 해당 내용은 private에서 선언했지만 다른 클래스에서도 사용해야 하는 내용이기에 Public 섹션에서 getter() 함수도 만들어주자.
Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-9 Reload Lecture리로드를 위한 작업을 시작해보자.먼저 액션 매핑부터다 보통 리로딩은 R키를 할당한다. 액션 매핑을 위한 콜백 함수와 바인딩 작업도 해주자. 다음으로 리로드를 위한 함수이다.우선 ECS_Unoccupied 상태가 아니라면 바로 return을 해야할 것이다. 필요한 변수를 더 선언해주자.리로드시 동작할 Montage에 대한 변수가 필요할 것이다. 아직 구현예정인 부분이 존재하여 해당 부분들은 주석으로 표시하였다.우선 구현된 부분만 보면 MontageSection을 불러오고,우리가 불러올 Montage와 AnimInstance가 유효한지부터 체크 해준다.이후 AnimInstance를 통해 Montage를 플레이 및 위의 섹션으로 점프해준다. 해당 함수를 필요한 부분에 호출해주자.저번에..