[Unity] [AR] Day 10~12
- 글쓴이는 배워가는 학생이며 업무 내용을 스스로 관리하기 위해 관련 티스토리를 작성, 운영 중입니다.
- 글 내용이 모두 정확하다고 보장할 수 없으며 글쓴이의 개인적인 생각이 담긴 글입니다.
- 제작할 때 참고한 글은 링크를 남겼으며, 남기지 않은 내용은 주변 지인들에게 얻은 팁입니다.
- 조언, 지적, 개선사항 등은 둥글게 부탁드립니다.
[ DAY 10~12 : AR 마무리 ]
To Do List
- 버튼 UI 수정
- AR 화면 상의 UI 수정
- 모델링 재수정
- bomb 시 캐릭터와 충돌하지 않도록 collider → trigger 로 수정
- 2번 이상 bomb 시 버그
- UI는 게임 상호작용 터치 제외
- bomb 시 캐릭터가 맞으면 파티클 나오도록 수정
- 플랫폼, 캐릭터, 폭발물 생성 시 파티클 나오도록 수정
- 애니메이션 대롱대롱 추가 및 나머지 애니메이션도 수정
- 메인 콘텐츠와 병합
1. 버튼 UI 수정
팀원이 버튼 UI도 작업해줘서 예쁜 버튼으로 교체했다.
2. AR 화면 상의 UI 수정
AR 화면 내 UI 역시 팀원이 디자인 해준 UI로 교체, 배치하였다.
3. 모델링 재수정
팀원과 상의해본 결과 유니티와 블렌더는 xyz상의 축 위치가 호환이 되지 않는 것 같아 보였다.
여러 테스트 끝에 블렌더에서 x로 -90도, y로 90도를 돌려서 apply해줘야 유니티에서 정상적인 각도로 보였다..
유니티 내부에서도 기준점을 다시 설정한다거나 그런 기능이 있으면 좋을 것 같다.
4. bomb 시 캐릭터와 충돌하지 않도록 collider → trigger 로 수정
private void OnTiriggerEnter(Collider collision)
{
// 손에서 폭발하지 않도록 함
if (collision.gameObject.tag.Equals("Player")) return;
// 오브젝트 현재 위치에 파티클 생성
//Instantiate(particle, transform.position, transform.rotation);
Destroy(gameObject);
}
캐릭터와 폭발물 충돌 시 캐릭터가 쓰러져 일어나지 않는 버그가 있어 위와 같이 수정하였다.
혹시 몰라서 캐릭터의 rigidbody의 constraints에서 x, z축도 고정했다.
5. 2번 이상 bomb 시 버그
2번 이상 bomb 버튼을 누르면 날리기 전에 서로 충돌 후 destroy 되어 bomb가 초기화 되지 않는 버그가 있었다.
기존에 폭발물을 들고 있을 때를 판단하는 bool bomPick을 활용해 해결하였다.
if (TouchHelper.bombButton && !bombPick)
{
BombCreate();
return;
}
6. UI는 게임 상호작용 터치 제외
using UnityEngine.EventSystems;
if (EventSystem.current.IsPointerOverGameObject() == false)
다음 코드를 사용한다.
(참고한 티스토리 : https://prosto.tistory.com/97)
7. bomb 시 캐릭터가 맞으면 파티클 나오도록 수정
void OnTriggerEnter(Collider collision)
{
// 손에서 폭발하지 않도록 함
//if (collision.gameObject.tag.Equals("Player")) return;
if (collision.gameObject.tag=="Player")
{
Bomb.bombPick = false;
Instantiate(catchParticle, transform.position, transform.rotation);
Destroy(gameObject);
}
else
{
// 오브젝트 현재 위치에 파티클 생성
Instantiate(groundParticle, transform.position, transform.rotation);
Destroy(gameObject);
}
}
8. 플랫폼, 캐릭터, 폭발물 생성 시 파티클 나오도록 수정
// 생성
var obj = Instantiate(prefab[Random.Range(0,3)], pos, Quaternion.identity, mainCamera.transform);
Instantiate(createParticle, pos, Quaternion.identity, mainCamera.transform);
9. 애니메이션 대롱대롱 추가 및 나머지 애니메이션도 수정
애니메이터쪽은 자주 다뤄본적이 없어서 급하게 벼락치기로 공부하며 적용했다.
Any State와 trigger를 사용해 유용하게 적용할 수 있었다.
10. 메인 콘텐츠와 병합
병합 중.. 큰 문제가 있었는데 ar에서 URP가 연동이 안되서 카메라가 작동이 안되는 버그가 있었다!
그것도 모르고 한참 헤매다가 우연히 URP에서의 적용법에 관한 스레드를 읽었고 검색해보니 공식글도 있었다.
( URP에서 카메라 적용법 : https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.1/manual/ar-camera-background-with-scriptable-render-pipeline.html )
그 밖에 ar plane의 적용 문제나 기타 등등의 자잘한 문제를 해결하고 나서 겨우 AR 프로젝트를 마칠 수 있었다.
다음엔 후기로 마무리해야지..