[UE5 FPS 프로젝트] 5. 총 추가 구현 및 Swap

2024. 6. 17. 15:58·언리얼엔진5/FPS 게임 1인 프로젝트

VIGlockWeapon

 

   Weaponbase에서 상속받아 VIGlockWeapon을 만들고 블루프린트도 만들어 부모 클래스를 VIGlockweapon으로 설정해 주었습니다.

    그리고 메쉬를 변경해 주었고, PointLight 와 Muzzle, MuzzleFlash 등을 메쉬에 맞게 조정해주었습니다.

 

 

부모 클래스 지정

 

Muzzle 과 PointLight 를 적당히 조절

 

 

    WeaponBase 에서 선언해놓은 순수 가상함수들을 오버라이드 해 주어서 기능을 구현했습니다.  VIAKWeapon과 다른 점은 재생하는 에셋만 입니다.

 

++) 24.06.19 수정사항

ChildActorComponent 부착 후 override 된 메서드들 호출 시 에디터가 읽어들이지 못해 순수 함수 매크로를 지우고, 빈 선언만 Weaponbase에 놔두었습니다.

 

가상 함수 오버라이드

 

Weapon Swap

 

     그리고 VICharacter 의 구현을 조금 변경하였는데, 월드에서 첫 번째로 AK 무기를 스폰하였던 것 뒤에 부무기 Glock을 소환해 주었습니다.  bEquippedWeapon 불리언을 통해 주무기를 장착했을 때가 true, 부무기가 장착되었을 때 false 로 설정됩니다.

     InputAction에 1번, 2번 숫자 버튼을 추가한 다음, 각 버튼을 누를 때마다 Visibility 를 조절해주어 무기를 변경할 수 있게 해 주었습니다.

 

void AVICharacter::EquipFirst()
{
	if (!bIsReloading)
	{
		D("EquipFirst")
		bEquippedWeapon = true;

		PrimaryWeapon->GetRootComponent()->SetVisibility(true);
		SecondaryWeapon->GetRootComponent()->SetVisibility(false);


	}

}

void AVICharacter::EquipSecond()
{
	if (!bIsReloading)
	{
		D("EquipSecond")
		bEquippedWeapon = false;

		PrimaryWeapon->GetRootComponent()->SetVisibility(false);
		SecondaryWeapon->GetRootComponent()->SetVisibility(true);


	}

}

 

 

    그 후 불리언을 통해 분기를 하여 캐릭터에서의 Fire, Reload 애니메이션이 알맞게 재생되도록 로직을 구성했습니다. 

 

void AVICharacter::Fire()
{
	UE_LOG(LogTemp, Log, TEXT("Fire"));

	if (bIsReloading) return;

	if (bEquippedWeapon)
	{
		PrimaryWeapon->Fire();

		if (PrimaryWeapon->GetAmmoCount() > 0)
		{
			//Play Montage
			FirstPersonMesh->GetAnimInstance()->Montage_Play(AKFireActionMontage, 1.0f);
		}
	}
	else
	{
		SecondaryWeapon->Fire();
		if (SecondaryWeapon->GetAmmoCount() > 0)
		{
			//Play Montage
			FirstPersonMesh->GetAnimInstance()->Montage_Play(GlockFireActionMontage, 1.0f);
		}
	}
}

 

 

 

실행 영상

 

 

 

 

깃허브

 

 

GitHub - chataeg/VI

Contribute to chataeg/VI development by creating an account on GitHub.

github.com

'언리얼엔진5 > FPS 게임 1인 프로젝트' 카테고리의 다른 글

[UE5 FPS 프로젝트] 6. ADS(조준) 시스템  (0) 2024.06.18
[UE5 FPS 프로젝트] 4. 총알 궤적, 총구 화염, 총알 자국, 탄퍼짐 구현  (0) 2024.06.14
[UE5 FPS 프로젝트] 3. HUD 및 피격 구현  (0) 2024.06.13
[UE5 FPS 프로젝트] 2. 발사 및 재장전 구현  (0) 2024.06.13
[UE5 FPS 프로젝트] 1. 1인칭 구현 및 무기 부착  (0) 2024.06.12
'언리얼엔진5/FPS 게임 1인 프로젝트' 카테고리의 다른 글
  • [UE5 FPS 프로젝트] 6. ADS(조준) 시스템
  • [UE5 FPS 프로젝트] 4. 총알 궤적, 총구 화염, 총알 자국, 탄퍼짐 구현
  • [UE5 FPS 프로젝트] 3. HUD 및 피격 구현
  • [UE5 FPS 프로젝트] 2. 발사 및 재장전 구현
Rocketbabydolls
Rocketbabydolls
Rocketbabydolls
  • Rocketbabydolls
    With The Lights Out
    Rocketbabydolls
  • 전체
    오늘
    어제
    • 전체글 (184) N
      • 프로그래밍 공부 (117)
        • C (16)
        • Jumping into C++ (9)
        • MFC (C++) (1)
        • 자료구조 (1)
        • 알고리즘 (1)
        • 백준 (C++) (74)
        • 핸즈온 머신러닝 2판 (6)
        • Unseen 3기 준비 (4)
        • 원티드 포텐업 게임 개발자 양성과정 2기 (4)
      • 언리얼엔진5 (63) N
        • [Part1] 이득우의 언리얼 프로그래밍 (12)
        • [Part2] 이득우의 언리얼 프로그래밍 (2)
        • [Part2 복습] 이득우의 언리얼 프로그래밍 (3)
        • [Part3] 이득우의 언리얼 프로그래밍 (14)
        • [Part4] 이득우의 언리얼 프로그래밍 (0)
        • FPS 게임 1인 프로젝트 (6)
        • 각종 지식 (11) N
        • 블루프린트 Paper2D 로 게임 만들기 (14)
        • 팀 프로젝트 (1)
      • 일상 (1)
      • ETC (1)
        • 맥북 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      언리얼엔진 eqs generator
      언리얼엔진5
      핸즈온 머신러닝 2판
      실전 C프로그래밍
      실전 C 프로그래밍
      실전 C프로그래밍 나중채
      언리얼엔진
      티스토리챌린지
      c++ 17298
      C언어 실습문제
      실전 C프로그래밍 실습문제
      오블완
      언리얼엔진5 fps 프로젝트
      실전C프로그래밍
      핸즈온 머신러닝
      실전C프로그래밍 나중채
      c언어
      언리얼엔진 eqs c++
      실전C프로그래밍 실습문제
      언리얼엔진 eqs 커스텀
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    Rocketbabydolls
    [UE5 FPS 프로젝트] 5. 총 추가 구현 및 Swap
    상단으로

    티스토리툴바