3D 개체 조작 - 장면 준비

이 자습서는 3D 개체 조작 자습서를 준비하는 역할을 합니다. 이 자습서에서는 기존 Unity 기능을 사용하여 3D 장면에서 개체를 이동할 수 있는 마우스 제어 커서를 만듭니다. 3D 개체 조작 자습서에서는 손 제스처 및 동작에 대한 마우스 입력 장치를 대체합니다.

Unity에서 제스처를 사용하는 방법을 배우는 데만 집중하려면 3D 개체 조작 자습서로 건너뛰세요.

이 자습서를 완료하는 데 약 30분이 걸립니다.

최종 결과 다운로드

이 자습서에서 가져온 최종 Unity 프로젝트는 GitHub의 오픈 소스 샘플 리포지토리에서 찾을 수 있습니다. 리포지토리를 복제한 후 다음 단계에 따라 애플리케이션을 실행합니다.

  1. Unity를 시작하고 프로젝트 탭에서 열기를 선택합니다.
  2. 복제된 리포지토리 내에서 Unity\Tutorials\3D 개체 조작 - 장면 준비 디렉터리로 이동합니다.
  3. 재생 단추(또는 Ctrl+P)를 눌러 장면을 실행합니다.

필수 구성 요소

이 자습서에서는 C# 프로그래밍 언어에 대한 기본적인 친숙함과 Unity 환경에 대한 몇 가지 경험이 있다고 가정합니다. Unity 프로젝트, 장면, 게임 개체 및 스크립트를 만드는 방법을 알고 있다고 가정합니다.

이 자습서를 시작하기 전에 소개 자습서를 완료하는 것이 좋습니다.

1단계 - 커서 게임 개체 만들기

  1. 소개 자습서를 완료한 경우 해당 자습서에서 만든 프로젝트를 열고 Ctrl+N을 눌러 새 장면을 만듭니다. 그렇지 않으면 새 Unity 프로젝트를 만들고 Unity용 Project Prague 도구 키트 를 가져옵니다(지침은 소개 자습서의 1단계 참조).

  2. Ctrl+S를 눌러 장면을 저장하고 이름을 3D 개체 조작으로 지정합니다.

  3. 빈 게임 개체를 만들고 이름을 커서로 지정 합니다. 이름이 같은 해당 C# 스크립트를 만듭니다. 게임 개체를 스크립트와 연결하려면 게임 개체의 검사기 보기로 이동하여 스크립트를 구성 요소 추가 단추 아래의 빈 영역으로 끕니다( 소개 자습서의 3단계를 참조하여 스크립트를 게임 개체와 연결하는 방법에 대해 읽어보세요).

  4. Visual Studio에서 커서 스크립트를 열고( 프로젝트 창에서 스크립트 아이콘 두 번 클릭) 해당 내용을 다음 코드로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    보듯이 커서 메서드는 구현되지 않습니다. 지금은 자리 소지자와 의견이 포함되어 있습니다.

  5. 커서가 마우스 포인터를 따르도록 하려면 Cursor.csGetCursorScreenPosition() 메서드를 다음 내용으로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    화면을 새로 고칠 때마다 올바른 위치에 커서를 그리려면 Cursor.csOnGUI() 메서드 내용을 다음으로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

  6. Unity용 Project Prague 도구 키트와 함께 제공되는 PragueCursor.png 텍스처를 커서 이미지로 사용합니다. 계층 구조 창에서 커서 게임 개체를 선택하고, 프로젝트 창의 MicrosoftGesturesToolkit/Textures 아래에서 PragueCursor.png 찾아서 검사기 창의 커서 이미지 상자로 끌어서 놓습니다.

    커서 이미지 설정

  7. 지금 장면을 재생합니다. 마우스 포인터가 장면 테두리 내에 있을 때마다 뒤에 빨간색 커서가 표시됩니다.

    마우스를 따라가는 커서

2단계 - 커서 아래 개체 강조 표시

커서를 사용하여 장면에서 개체를 이동하려고 합니다. 현재 커서 아래에 있는 개체를 인식하기 위해 해당 개체의 개요를 강조 표시합니다.

  1. 먼저 장면을 여러 기본 개체로 채웁니다. 편의를 위해 장면에 새 기본 형식을 추가하기 전에 주 카메라의 뷰포인트를 파악하는 것이 좋습니다. 계층 구조 창에서 주 카메라를 선택하고 GameObject 메뉴로 이동한 다음 선택한 보기 맞춤을 선택합니다.

    새 기본 형식을 인스턴스화하려면 GameObject 메뉴로 다시 이동하여 3D 개체를 선택하고 하위 메뉴(큐브, 등)에서 기본 형식 중 하나를 선택합니다. 이 프로세스를 여러 번 반복하여 각 새 기본 형식을 장면의 다른 위치로 이동합니다.

    기본 형식으로 장면 채우기

    개체를 이동하려면 개체를 클릭하고 w 키를 누른 다음 이동 gizmo를 사용하여 끌어옵니다.

  2. Cursor 클래스에 프라이빗 멤버를 추가합니다. 이 멤버를 사용하여 현재 커서 아래에 게임 개체를 저장합니다. 이 개체를 "가리킨 개체"라고 합니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    또한 다음 공용 멤버를 추가합니다. 곧 이를 사용하여 강조 표시 기능을 구현할 예정입니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    현재 커서 아래에 있는 개체를 식별하려면 GetHoveredObject() 메서드의 내용을 다음 구현으로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    마우스로 가리킨 개체를 강조 표시하려면 Update() 의 내용을 다음으로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    모든 변경 내용을 Cursor.cs 스크립트에 저장합니다.

  3. 계층 구조 창에서 커서 게임 개체를 선택합니다. 프로젝트 창의 MicrosoftGesturesToolkit/Material 아래에서 OuterGlow.mat 재질을 찾습니다. 검사기 창에서 OuterGlow.mat강조 표시 상자로 끌어 서 놓습니다.

    강조 재질 추가

  4. 장면을 재생하고 화면을 가로 질러 커서를 이동합니다. 개체가 커서 아래에 있을 때마다 윤곽선은 푸르른 기운으로 빛납니다.

    네온 효과를 사용하여 장면 재생

3단계 - 강조 표시된 개체 이동

이 단계에서는 커서를 사용하여 개체를 "잡아" 공간에서 이동할 수 있습니다.

  1. Cursor.cs 스크립트에서 다음 프라이빗 멤버를 준비합니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    그리고 다음 공용 멤버:

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

  2. OnGUI() 메서드 내용을 다음으로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

    이렇게 하면 커서가 "잡기 모드"로 전환될 때 그라브커소르틴트 색이 변경됩니다.

  3. 이제 StartGrab()StopGrab() 메서드를 구현할 준비가 되었습니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

  4. Update() 메서드에서 다음 기능을 추가하려고 합니다.

    • 개체를 마우스로 가리키고 있는 동안 마우스 왼쪽 단추를 누를 때마다(놓기) 잡기 모드를 입력합니다.
    • 잡기 모드인 경우 마우스로 가리킨 개체가 커서를 따라야 합니다.

    이렇게 하려면 다음과 같이 Update() 메서드를 수정합니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

  5. 지금 장면을 실행하고 개체를 마우스로 가리키고 마우스 왼쪽 단추를 누르고 끌어서 이동합니다. 커서의 색은 잡기 모드로 전환할 때 변경됩니다.

    잡기 모드를 사용하여 장면 재생

  6. 스크롤 휠을 사용하여 깊이 차원에서 잡은 개체의 움직임을 제어합니다.

    GetCursorDistanceScalingFactor()의 내용을 다음으로 바꿉니다.

    경고

    찾으시는 샘플이 이동된 것으로 보입니다. 현재 이 문제를 해결하기 위해 노력하고 있습니다.

  7. 지금 장면을 실행해 보세요. 스크롤 휠을 사용하여 카메라에서 또는 멀리 떨어진 방사형 방향으로 이동하면 3차원에서 모두 잡은 개체를 이동할 수 있습니다.