본문 바로가기

전체 글

(842)
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-13 Limit Pickup and Equip Sounds총알 6개를 한 번에 픽업할 때 사운드가 증폭되어 상당히 시끄럽게 들린다.이를 Timer를 통해 조절해보도록 하자. 먼저 픽업 및 장착에 대한 사운드와 사운드에 대한 bool 변수, 그리고 픽업 및 장착에 대한 사운드 타이머 리셋 함수 (콜백 함수)와 각 리셋을 위한 시간 변수가 필요하다. 각 bool 값에 대해선 getter() 함수를 생성해주고, 이어서 public 섹션에 타이머를 시작하기 위한 함수들도 작성해주자. reset 함수는 간단하게 각 bool 변수 값을 true로 설정하면 된다.타이머 시작함수들은 각 Sound 값을 false로 만들고, SetTimer() 함수를 호출한다. 그리고 Item() 클래스에서 사운드를 위한 함수를 따로 만들어..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-12 Interp to Multiple Locations이제 실제로 보간해주는 작업을 구현해주자.먼저 보간할 각 위치에 대한 Index를 얻는 함수를 구현해주자. 인덱스의 경우 ItemCount을 통해 계산하게 된다.총알이 여러개 있을 경우 기본적으로 ItemCount가 0인 첫 번째 총알을 반환할 것이다.다음으로 ItemCount가 증가했으므로 다시 해당 Count보다 작은 값을 찾게 된다.처음에 초기화 했을 때 전부 ItemCount을 0으로 했기 때문에 바로 다음 인덱스를 가르키게 된다.이를 반복하며 ItemCount가 1씩 증가하며 다음 ItemCount가 0인 인덱스를 순차적으로 반환하게 된다. InterpLoc에 대한 Index 변수도 선언 및 초기화 해주자. 그리고 해당 Index에 방금 만들어준..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-11 Setup Interp Locations저번 강의에서 설정한 위치에 대한 작업을 해주자.먼저 픽업한 아이템이 무엇인지 알기 위해 무기와 총알에 대한 열거형을 선언해주었다. 이어서 해당 변수와 초기화도 해주었다. 이어서 구조체와 구조체를 기반으로 한 TArray도 선언해주었다. InterpLocation을 얻기 위한 함수도 public으로 선언해주었다.InterpLocations의 갯수를 체크하고 범위 내면 입력받은 인덱스의 InterpLocation을 반환하거나,없다면 기본 값을 반환하게 된다. 이제 기본 초기화 함수도 작성해주자.기존 구조체에 Add 함수를 통해 UScenecomponent와 ItemCount 값을 넘겨주면 된다.무기와 총알 종류 6개에 대해 각각 초기화를 진행하자. 초기화 함수의 경우..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-10 Interpolation Scene Components탄약의 경우 무기와 동일한 위치로 보간되는 것이 다소 어색해보인다.탄약과 무기의 보간 위치를 다르게 설정해줄 것이며,또 여러개의 탄약이 있는 경우에 대해서도 다른 위치에 보간되도록 해보자. 먼저 이를 USceneComponent로 다루게 되며, 무기 1개 탄약 6개에 대한 변수를 선언해줄 것이다. 이제 해당 컴포넌트에 각각 Static Mesh를 생성하여 각각에 맞는 Mesh를 할당해줄 것이다.여기서 총기 Mesh는 호환이 불가능한 에셋이여서 일단 임시용으로 강의와 다른 Mesh(드릴)을 할당해주었다.나머지 총알은 기존에 있던 Shells_45_Ammo를 사용할 것이며, 전보다 작은 smaller 버전을 선택할 것이다.그리고 각각 위치를 따로 잡아주자..
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-9 Pickup Ammo on OverlapE 키를 눌러서 총알을 줍는 것 뿐만 아니라 총알을 지나칠 때도 바로 총알을 줍게 만들어보자.Sphere를 이용한 오버렙 이벤트를 통해 구현할 것이기 때문에 필요한 변수부터 선언해주자. Item 클래스에서도 사용한 적 있는 OverLap 함수를 이름만 바꿔서 또 사용할 것이다. 그리고 게임 시작시 바인딩을 해줄 것이다. 이제 오버랩된 캐릭터가 유효하면 StartItemCurve() 함수를 호출한다.이후 탄약은 사라지므로 충돌 판정도 없애준다. 이러면 PickupSound가 SelectButtonPressed() 함수에 있기에 해당 사운드가 들리지 않는다.따라서 PickupSound 호출해주는 부분을 StartItemCurve() 함수로 위치를 조정해주자.
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-8 Bind Ammo Icon이번엔 Icon에 대해서도 바인딩 작업을 해줄 것이다.선택할 이미지를 위해 변수를 선언해주자. 그리고 해당 값으로 바인딩을 해주자. 블루프린트 클래스로 가서 Icon으로 선택할 텍스처를 골라주자. 바인딩으로 인해 고른 텍스처로 설정되어있는 것을 볼 수 있다.
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-7 Bind Ammo CountAmmo Count에 대해 하드코딩한 것을 수정해보자.무기에 대한 위젯을 만들 때 바인딩했던 작업을 똑같이 해줄 것이다. 이번엔 Item Reference가 아닌 Ammo Reference 변수가 필요하다. 이를 Bp_AmmoPickup 클래스 graph 창에서 생성해주자. 그리고 Ammo BP 클래스로 가서 Ammo Reference 변수에 대한 값을 세팅해주자. 이제 이를 토대로 바인딩을 해줄 것이다. 전에 설정했던 20개가 그대로 반영된 것을 볼 수 있다.
Unreal Engine 4 C++ The Ultimate Shooter Course Section 9-6 Ammo Widget Continued저번에 이어서 Ammo Count에 대해서도 마저 구현해주자. 이제 해당 Ammo 블루프린트 클래스에 Widget 클래스를 할당해주어야 한다.컴파일을 해보면 해당 탄약에 대한 위젯이 뜨는 것을 볼 수 있다.