#오늘 한 작업
Unity 3D
무기 상호작용 및 변경
01. 오브젝트 감지
private void OnTriggerStay(Collider other)
{
if(other.tag == "Weapon") nearObject = other.gameObject;
//Debug.Log(nearObject.name);
}
private void OnTriggerExit(Collider other)
{
if(other.tag == "Weapon") nearObject = null;
}
OnTriggerStay : Trigger 가 충돌중이라면 Collider 의 정보를 매개변수로 받아온다.
OnTriggerExit : Trigger 의 충돌이 끝나면 Collider 의 정보를 매개변수로 받아온다.
충돌시 OnTriggerStay 함수가 호출된다
02. 무기입수
무기와 상호작용하여 무기를 캐릭터가 얻어갈수 있도록 한다.
게임 내 상호작용을 담당하는 키로 InputManager 에서 e 버튼으로 할당해주었다.
void Interation()
{
if(iDown && nearObject != null && !isJump && !isDodge)
{
if(nearObject.tag == "Weapon")
{
Item item = nearObject.GetComponent<Item>();
int weaponIndex = item.value;
hasWeapons[weaponIndex]= true;
Destroy(nearObject);
}
}
}
Interation 키 작동시 불려와지는 함수이다
if ( iDown(bool값) 이 true 라면 && 근처 오브젝트(OnTriggerStay 에 담겨있는 오브젝트) 가 null 이 아니라면 && 점프 혹은 회피중이 아니라면 )
또한 if 근처 오브젝트 tag 가 Weapon 이라면 Item 의 value 를 불러와 weaponIndex에 담고 현재 weapon 의 bool 값을 true로 바꾼다
03. 무기장착 && 04. 무기 교체
Scene View 에서 무기의 Prefab 을 Player 의 Right Hand 에 할당시켜준다 그 후
InputManager 에서 Swap1~3 을 1 / 2 / 3 으로 할당해준다
int weaponIndex = -1;
if (sDown1) weaponIndex = 0;
if (sDown2) weaponIndex = 1;
if (sDown3) weaponIndex = 2;
if ((sDown1 || sDown2 || sDown3) && !isJump && !isDodge)
{
if(equipWeapon != null) equipWeapon.SetActive(false);
equipWeaponIndex = weaponIndex;
equipWeapon = weapons[weaponIndex];
equipWeapon.SetActive(true);
}
평소엔 비활성화 상태로 두고
각 버튼을 누를시 호출해 오브젝트를 활성화 비활성화 상태로 변경한다
만약 무기를 상호작용으로 얻지 못하였다면
if (sDown1 && (!hasWeapons[0] || equipWeaponIndex == 0)) return;
예시와 같은 함수를 이용해 return 시킨다.
Swap 애니메이션의 지정과 bool 값을 추가해 이동 Vec 고정
if(isSwap) moveVec = Vector3.zero; //Swap 도중 이동 Vec 고정
#작업중 변경(수정) 사항
해당 없음
#예상시간/실제시간
1시간 30분 (08시 시작) / 2시간40분 ( 10시 40분 마무리 )
※단 새로운 팀원의 업무 도움을 위해 1시간정도 작업을 거의 진행하지 못하였음
#작업중 애로사항
Player 의 손에 각종 무기(Object)를 고정시키면 고정값으로 인하여 Player가 계속 밀려나고
혹은 Player 가 이동시 Object는 위치를 가지지못하고 날아갔다.
이 문제를 고민하던중 Rigidbody 를 컴포넌트로 가지고있어 플레이어와 충돌한다고 생각하였고
Is Kinematic 이 꺼져있음을 인지하여 활성화 해주고 Trriger 가아닌 Collider 를 제거하였다 (해결)
#예상되는 애로사항
다음 강의는 아이템획득 과 캐릭터 기반 공전시키기이다
오늘 있었던 애로사항과 동일하게 Rigidbody를 가진 공전물이 Player 와 충돌하여 날아가는사항
(항상 Prefab 사용시 Rigidbody 와 Collider 확인하기)
#지난주 애로사항
해당 없음
'개인개발기록 > 게임개발프로젝트' 카테고리의 다른 글
2025_04_17_플랫포머_게임개발_연습_프로젝트 (0) | 2025.04.17 |
---|---|
2025_04_16_플랫포머_게임개발_연습_프로젝트 (0) | 2025.04.16 |
2025_04_11_플랫포머_게임개발_연습_프로젝트 (1) | 2025.04.12 |
2025_04_10_플랫포머_게임개발_연습_프로젝트 (0) | 2025.04.11 |
2025_04_09_플랫포머_게임개발_연습_프로젝트 (0) | 2025.04.10 |