유니티 3D 쿼터뷰 액션게임 만들기
👾 드랍 무기 입수 / 교체 👾
1. 오브젝트 감지
✏️ Player가 무기에 접근 인지
트리거 된 아이템을 저장하기 위한 변수선언
✏️ 트리거 이벤트인 OnTriggerStay, Exit 사용
📌 OnTriggerStay()
Wepon 태그를 조건으로 하여 로직 작성
무기 영역에 다가가면, other 변수에 저장
📌 OnTriggerExit()
무기 영역에서 벗어나면, nearObject는 없음을 표시
2. 무기 입수
🔻 무기와의 인터렉션을 위한 bool 값 선언
bool iDown;
🔻 Interaction 버튼 입력
Input Manager에서 Interaction button 생성 / 입력 버튼은 'e'
void GetInput()
{
iDown = Input.GetButtonDown("Interaction");
}
🔻 Interaction() 함수 생성 및 Update()에서 불러오기
void Update()
{
Interaction();
}
🔻 Interaction()
- 조건을 성립하면 무기 얻은 것을 표시, 해당 무기를 비활성화시키는 로직
- 조건 : iDown 버튼 입력 + Player 주변에 상호작용 물체가 있음 + 점프X + 회피X
🔻 플레이어의 무기관련 배열 함수 2개 선언
✏️ Weapon tag에 접근하면 ~
- Item 스크립트의 아이템 정보를 nearObject가 가지고 옴
- weponIndex는 각각 아이템에 부여한 value 값 (권총 0, 망치 1, 머신총 2)
- value값이 hasWeapons 배열에 하나씩 들어가서 Weapon Item을 만나면 체크가 됨
- Destroy() 함수로 nearObject를 비활성화함
📣 Has Weapons 배열 길이를 정해주지 않으면 에러가 발생함
🔻 무기를 하나씩 먹을 때마다 Has Weapons가 순서대로 체크됨
3. 무기 장착
Player - Mesh Object - Bone_Body - Bone_Shoulder_R - RightHand
🔻 플레이어 오른손에 무기 위치를 정해줄 오브젝트 생성
Collider 삭제, Mesh Renderer 비활성화
🔻 무기 Prefab 프리팹들을 무기 위치에 생성
🔻 배치된 3개의 무기 오브젝트는 모두 비활성화 & Player Weapons 배열에 할당
4. 무기 교체
장비를 고를 때 각 버튼을 입력하여 무기를 교체함
🔻 장비 단축키 1,2,3 따로 변수 생성 및 Input버튼으로 등록
bool sDown1;
bool sDown2;
bool sDown3;
void GetInput()
{
sDown1 = Input.GetButtonDown("Swap1");
sDown2 = Input.GetButtonDown("Swap2");
sDown3 = Input.GetButtonDown("Swap3");
}
📌 무기 교체 함수 생성 Swap();
단축키 셋 중 하나만 눌러도 되도록 OR조건 작성 + 점프X + 회피X
단축키에 맞는 무기를 배열에서 활성화하기
🔻 Player가 아이템 먹기 & 아이템 장착 할 수 있습니다
문제점 : 아이템을 먹지 않아도 Swap 버튼을 누르면 장착 가능, 아이템 교체되지 않고 겹쳐서 장착됨
✏️ 무기 저장
기존에 장착된 무기를 저장하는 변수를 선언하고 활용하기
GameObject equipWeapon;
✏️ 무기 교체 시 애니메이션 추가
🔻 교체 시간차를 위한 플래그 로직 작성
bool Swaping;
Update()에 SwapOut() 추가
Move()에서 Swaping 중에는 Vector3가 0으로
Jump()와 Dodge() 실행 조건에도 Swaping을 하지 않을 때 실행되도록 추가
🔻 점프나 이동에서 무기가 교체되지 않는 것을 확인할 수 있습니다
✏️ 무기를 얻어야만 장착 가능 & 무기중복교체 불가 조건
🔻 무기 중복 교체, 없는 무기 확인을 위한 조건 추가
int equipWeaponIndex = -1;
'유니티' 카테고리의 다른 글
유니티 3D 쿼터뷰 액션 게임 - 근접공격 구현하기 / Trail Renderer / 코루틴 (0) | 2022.04.22 |
---|---|
유니티 3D 쿼터뷰 액션 게임 - 아이템 먹기 / 공전 물체 만들기 / RotateRound() (0) | 2022.04.21 |
유니티 3D 쿼터뷰 액션 게임 - 아이템 만들기 / Prefeb / Light Effect / Particle Effect (0) | 2022.04.19 |
유니티 3D 쿼터뷰 액션게임 만들기 - 플레이어 점프 / 회피 (0) | 2022.04.19 |
유니티 3D 쿼터뷰 액션게임 - 플레이어 이동 (0) | 2022.04.18 |