경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220722 2022/04/04~2022/12/14

Jinho Lee·2022년 7월 22일
0

경일 메타버스 20220722 16주차 5일 수업내용. 유니티 & C# - 좀비 서바이버 : 내비게이션 시스템, 내브메쉬 NavMesh, 동적 콜라이더 Overlap, foreach문

내비게이션(Navigation) 시스템

  • 유니티에서 제공하는, 한 위치에서 다른 위치로의 경로를 계산하고 실시간으로 장애물을 피하며 이동하는 인공지능을 만드는 시스템

  • 매뉴얼 : https://docs.unity3d.com/kr/current/Manual/nav-NavigationSystem.html

  • 내비메시(NavMesh) :
    에이전트가 걸어 다닐 수 있는 표면

  • 내비메시 에이전트( NavMesh Agent) :
    내비메시 위에서 경로를 계산하고 이동하는 캐릭터 또는 컴포넌트

  • 내비메시 장애물 :
    에이전트의 경로를 막는 장애물

  • 오프메시 링크(Off Mesh Link) :
    끊어진 내비메시 영역 사이를 잇는 연결 지점
    뛰어넘을 수 있는 울타리나 타고 올라갈 수 있는 담벼락 등을 구현하는데 사용

  • 내비메시 빌드 (굽기)
    내비게이션은 연산을 많이 사용하기에, 미리 데이터를 계산하여 내비메시를 구워 놓고 사용한다.
    정적 게임 오브젝트를 대상으로 생성된다.

  • NavMeshAgent.SetDestination(Vector3) :
    목적지 설정

  • NavMeshAgent.isStopped :
    에이전트가 멈출지 bool 값

  • NavMesh.SamplePosition(원점, 샘플링 결과, 최대 거리, 에어리어 마스크) :
    bool SamplePosition (Vector3 sourcePos, out AI.NavMeshHit hit, float maxDis, int areaMask)
    원점 sourcePos로부터 최대 거리 maxDis의 반경 안에서 (즉, 반지름 maxDis의 구 안에서),
    원점과 가장 가까운 NavMesh 위의 점을 찾는다.
    가장 가까운 점을 찾으면 true를 반환한다.

Collider[] Physics.Overlap~() :

  • 동적 콜라이더 생성 메소드. 새로운 콜라이더를 동적으로 생성한다.
  • 이에 충돌, 접촉하는 콜라이더를 반환한다.

int Physics.Overlap~NonAlloc() :

  • 동적 콜라이더 생성 메소드. 새로운 콜라이더를 동적으로 생성한다.
  • 이에 충돌, 접촉하는 콜라이더의 수를 반환한다.

foreach문 :

  • 배열, 콜렉션 등의 전체를 순회하고자 할 때 사용할 수 있는 for문
  • foreach(타입 변수명 in 배열명)

Debug.Assert(조건문) :
조건을 확인하고, 값이 false면 메시지를 출력하고 호출 스택을 보여주는 메시지 상자를 표시한다.

마우스 액션

  • 카메라(Camera)와 빛(Ray)의 컴포넌트를 활용하면, 카메라에 비치는 스크린마우스 포인터의 위치를 얻을 수 있다.

    • Camera.main :
      메인 카메라 컴포넌트를 가리킨다.

    • Camera.ScreenPointToRay(Vector3) :
      카메라에서 스크린 위 한 점으로 이어지는 광선을 그린다.

    • Input.mousePosition :
      입력에서, 마우스의 현재 위치를 가리킨다.

    • 스크린의 왼쪽 아래가 원점 (0, 0),
      오른쪽으로 갈수록 ++x, 위쪽으로 갈수록 ++y

  • LayerMask정수의 리스트로 번호 매겨지며, 그 번호마다 비트 연산(0 or 1)을 하여 1이면 충돌, 0이면 충돌하지 않음으로 구분한다.
    ⇒ 따라서 코드적으로 LayerMask를 이용하려면 비트 연산을 사용해야 함에 주의하자.

2022. 07. 22 마우스 액션 예시 코드 - 유니티 & C# 좀비 서바이버

0개의 댓글