Giter Site home page Giter Site logo

ar_project's Introduction

AR-Core-Project

Unity 2022.3.8f1

AR 프로그래밍 기말 프로젝트


게임 진행 방법

  1. AR Plane을 벽을 인식
    1 AR 인식

  2. 터치를 통해 포탈을 생성(포탈을 통해서만 맵을 볼 수 있다)

  3. 조이스틱으로 플레이어를 이동
    2 포탈 생성 후 조이스틱 이동

  4. 열쇠를 획득
    3  아이템 획득

  5. 몬스터를 피해서 이동(공격 받으면 목숨이 깎인다)
    4  공격 피격

  6. 탈출 지점까지 이동
    5  탈출

환경 설정

  • AR Core 템플릿으로 프로젝트 생성
  • 3D Beginner: Tutorial Resources 에샛을 추가할 때 그냥 import하면 프로젝트 설정도 모두 오버라이드가 된다.
  • 문제는 오버라이드를 하면 AR Core 설정도 변경되어 AR이 제대로 작동하지 않음.
  • 고로 Project Setting은 체크 해제 후 모두 import

사용 애셋

참고 문서

제작한 스크립트 (용도, 기능)

  • ZombieAttack (좀비 몬스터의의 공격)
  • SetMoveMap (맵 위치 이동)
  • SendMessge (메시지 출력)
  • LookAtCamera (UI 카메라 바라보기)
  • Joystick (조이스틱 이동)
  • ItemScript (열쇠 획득)
  • GameStart (게임 포탈 생성 및 설정 초기화)

기존 애셋을 수정한 스크립트 (수정 내용)

  • Observer (OnTriggerEnter가 되면 좀비 공격 수행하도록 수정)
  • PlayerMovement (조이스틱 위치와 카메라 방향에 따라 이동하도록 변경)
  • GameEnding (게임 종료 조건을 목숨 3번으로 변경)

작업 과정 내용

  • AR터치 시 창문 스폰
    • 기존 플레이스 온 플랜 컴포넌트 사용
  • 창문을 통해서만 맵을 볼 수 있게 구현
    • 레이어 마스크를 통해 구현
  • 재시작 시 씬 로드가 아닌 위치 초기화
    • Game Ending스크립트를 수정하여 사용
  • 플레이어 이동 구현(조이스틱)
    • 조이스틱 UI를 통해 사용
  • 게임 시작 (포탈 생성) 이후 조이스틱 및 UI가 보이게 구현
    • PlaceOnPlane을 GameStart로 변경 후 시작 시 Canvas.SetActive(True)
  • 네비매쉬 동적 베이크 (현재 맵 이동 시 적들이 움직이지 않음->내비메쉬 문제)
    • 해당 부분에서 적이 제대로 이동하지 않는 현상이 발생
      • 해결: 기존 베이크된(애셋폴더) 내비메쉬를 지우고, 바닥 오브젝트에 NavMeshSurface를 사용하여 동적 베이크? 사용
      • 또 셋맵 버튼 누를 시 베이크된 맵 다시 로드?하고 몬스터 NavMeshAgent에도 다시 적용
  • 조이스틱 부분은 AR레이가 적용 안되게 해야함
    • 해결: 클릭 시 레이를 이용하여 UI인지 구분 후 실행
  • 카메라 기준으로 상하좌우 이동 구현
    • 해결: 카메라 transform을 이용하여 방향에 맞게 이동 수정
  • 적 오브젝트도 창문을 통해서만 보이도록 수정
    • 해결: 유령, 빛 등이 투명한 오브젝트로 Transparent 렌더링이됨 투명한 오브젝트들을 모두 불투명한 Opaque로 바꾸어서 적용
  • 아이템 주워서 탈출
    • 키 아이템을 주우면 탈출할 수 있다
    • ItemScript : 아이템에 트리거엔터가 되면 GameEnding에 getItem이 true가됨
    • GameEnding : 탈출 오브젝트 트리거엔터시 getItem도 true여야 탈출 성공
    • SendMessege : 게임에서 공지, 메시지를 전달함(싱글)
  • 목숨을 3개로 변경
    • GameEnding : m_lives 정수 3으로 목숨을 구현
    • Lives : 목숨 UI로 스크롤 뷰로 구성, 1개 깎이면 SetActive(false)가
  • 적을 유령이 아닌 좀비로 변경
    • 애니메이션 믹사모 좀비 워크로 변경
    • 걷는 소리도 바꾸면 좋을 듯 (으어어~ 소리, 좀비 걷는 소리)
    • 플레이어 닿으면 공격?
      • 믹사모 애니메이션 사용

렌더러 마스크 지정(포탈을 통해서만 맵이 보이도록 제작)

  • 창문 레이어 PortalWIndow - Transparent
  • 맵 레이어 PortalCOntents - Opaque
  • Project Settings - Quality - Rendering - Render Pipeline Asset -> 렌더러 설정
  • Opaque Layer Mask - PortalContents만 해제
  • 모든 오브젝트를 Opaque로만 설정하여 깔끔하게 사라지도록 구현

렌더링 포탈-맵 마스크 문제 해결

  • Portal 렌더러 설정값은 의도한대로 문제는 없었으나 게임을 실행하면 메인카메라, 프로젝트 렌더러가 기존 URP-Perfomant로 설정이됨
  • 그래서 편집씬에서는 정상적으로 창문을 통해서만 맵을 볼 수 있었으나, 게임을 시작하면 렌더러가 바뀌면서 초기화가 되는 현상
  • 이를 해결하기 위해 URP-Perfomant의 Renderer List를 마스크 설정이 된 URP-Portal Asset_Renderer로 설정하여, 렌더러가 URP-Perfomant으로 바뀌어도 문제가 없는 것을 확인. 즉 정상적으로 작동함
  • 의문인 점은 URP-Performant-Renderer에서도 Portal Renderer와 같이 설정하였는데 다른 결과를 보인다는 점(이 부분은 따로 확인하지는 않았지만 실행하면 URP-Performant-Renderer여기의 설정들도 바뀔 수 있는 가능성이 높다고 생각)

ar_project's People

Contributors

toproof25 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.