Unity/기초 예제

유니티 Raycast를 이용한 간단한 게임 만들기 Part 3 Player LineRenderer 간단한 예제 유니티 기초

최애뎡 2021. 6. 14. 20:11
728x90
반응형

-LineRenderer-
3D 공간에서 두 개 이상의 점 배열을 사용하고 각각을 연결하는 직선을 그립니다.
하나의 LineRenderer 컴포넌트는 단순한 직선에서 시작해서 복잡한 곡선까지 모두 그릴 수 있습니다.
다만 그려지는 모든 라인은 연속적이어야 합니다.
두 개 이상의 완전히 분리된 선을 그려야 하는 경우,
LineRenderer를 포함하는 여러 개의 게임 오브젝트를 사용해야 합니다.
LineRenderer의 속성

Cast Shadows 라인이 그림자를 드리우는지, 라인의 한쪽 면 또는 양쪽 면에서 그림자를 드리워야 하는지, 또는 라인이 별도로 그려지지 않고 그림자만 드리워야 하는지 등을 결정합니다. 스크립팅 API 참조 문서의 Renderer.shadowCastingMode 페이지에서 보다 자세한 내용을 확인할 수 있습니다.
Receive Shadows 이 옵션을 활성화하면 라인에 그림자가 적용됩니다.
Motion Vectors 이 라인 렌더러에 사용할 모션 벡터 타입을 선택합니다. 스크립팅 API 참조 문서의 Renderer.motionVectorGenerationMode 페이지에서 보다 자세한 내용을 확인할 수 있습니다.
Materials 이 프로퍼티는 라인을 렌더링하는 데 사용된 머티리얼의 배열을 설명합니다. 라인은 배열 내 각각의 머티리얼에 대해 한 번씩 그려집니다.
Light Parameters 여기에 라이트맵 파라미터 에셋을 참조하면 라인이 전역 조명 시스템과 상호작용할 수 있게 됩니다.
Positions 이 프로퍼티는 연결할 Vector3 점 배열을 설명합니다.
Use World Space 이 옵션을 활성화하면 점은 이 컴포넌트가 부착된 게임 오브젝트의 변환에 속하는 것이 아닌 월드 공간 좌표로 간주됩니다.
Loop 라인의 처음과 끝 포지션을 연결하려면 이 옵션을 활성화해야 합니다. 이렇게 하면 닫힌 루프가 생성됩니다.
Width 라인의 처음과 끝 사이 다양한 지점의 너비를 조절하려면 이 프로퍼티에서 너비 값 및 커브를 지정하면 됩니다. 커브는 각각의 버텍스에서만 샘플링되므로 정확성은 라인 내 존재하는 버텍스 수로 제한됩니다. 라인의 전반적인 너비는 너비 값으로 조정할 수 있습니다.
Color 길이에 따라 라인의 색상을 조절하려면 그레디언트를 지정하면 됩니다.
Corner Vertices 이 프로퍼티는 라인에 코너를 그리는 경우, 얼마나 많은 추가 버텍스가 사용되는지 지정합니다. 이 값을 늘리면 라인 코너가 더 둥글게 보입니다.
End Cap Vertices 이 프로퍼티는 라인에 끝부분을 그리는 경우, 얼마나 많은 추가 버텍스가 사용되는지 지정합니다. 이 값을 늘리면 라인 끝부분이 더 둥글게 보입니다.
Alignment 이 옵션을 View 로 설정하면 라인이 카메라를 향하게 하고 Local 로 설정하면 Transform 컴포넌트 방향에 따라 라인이 정렬되도록 할 수 있습니다.
Texture Mode 라인에 텍스처를 어떻게 적용할지 조절합니다. Stretch 를 사용하여 라인 전체 길이에 따라 텍스처 맵을 적용하거나 Wrap 을 사용하여 라인 길이에 따라 텍스처를 반복할 수 있습니다. 머티리얼에서 Tiling 파라미터를 사용하여 반복 속도를 조절할 수 있습니다.
Generate Lighting Data 활성화하면(박스에 체크), 노멀 및 탄젠트를 포함한 라인 지오메트리가 구축됩니다. 이렇게 하면 라인 지오메트리가 스탠다드 셰이더 또는 커스텀 셰이더를 통해 씬 조명을 사용하는 머티리얼을 사용합니다.
Light Probes 프로브 기반 조명 보간 모드입니다.
Reflection Probes 이 옵션이 활성화된 상태에서 씬에 반사 프로브가 존재하는 경우, 해당 라인 렌더러에 대해 반사 텍스처가 지정되며 이는 빌트인 셰이더 유니폼 변수로 설정됩니다.

이제 LineRenderer을 적용시키고 싶지만 그 전에 잠시 다운로드해야 할 것들이 있습니다.

https://developers.google.com/vr/develop/unity/download

 

Downloads and samples  |  Google VR  |  Google Developers

November 6, 2019 update: There's a new open source Cardboard SDK that offers a streamlined API, improved device compatibility, and built-in viewer profile QR code scanning. We recommend that all developers actively building for Google Cardboard migrate to

developers.google.com

Goole VR이 필요해요!! LineRenderer에 적용시킬 Material을 위함입니다.

 

다운로드한 뒤 프로젝트에 Import 해주시구요.

바로 Gun 오브젝트에 LineRenderer을 추가하도록 하겠습니다.

LineRenderer가 적용되고 나면 Use World Space가 디폴트로 체크되어있습니다.
그렇기에 LineRenderer가 Gun에서부터 시작하지 않는 모습이 보여집니다.
그러므로 Use World Space을 체크 해제하고

Materials 란에서 Controller Laser을 추가하도록 하겠습니다.
(Controller Laser 이걸 사용하기 위해 Goole VR 유니티 패키지를 받았습니다 ㅋㅋㅋ)

자 이제 위처럼 Positions와 Width를 변경하여 Line을 보기 좋게 만들어 보겠습니다.
Positions에서 Element 0과 1은 Line의 시작점과 끝점 정도로 생각하시면 되겠습니다.
그런데 여기서 Element 1의 Y 값을 증가시킨 이유를 아시겠나요?!
LineRenderer을 적용시킨 Gun 오브젝트의 Transform을 보시면 Rotation X 가 90임을 보실 수 있습니다. 앞에 예제에서 보았듯 유니티는 왼손 법칙을 사용하기 때문에 Rotation X를 90으로 하여
Capsule 모양의 Gun의 Y 축이 Z 방향으로 향하게 되었죠? 그렇기 때문에 Element 1의 Z 값이 아니라 Y 값을 증가시킴으로 인해 Line이 Z 축의 방면으로 향하게 됩니다. 그리고 Width의 경우는 

마우스 오른쪽 버튼을 클릭하여 Add Key를 통해 새로운 Key를 만들고
시작점부터 끝점까지의 width를 조절하실 수 있습니다.
이제 모든 설정이 끝났으니 실행 화면을 보도록 하겠습니다. 

 

좌: Scene 뷰, 우: Game 뷰

LineRenderer가 제대로 적용이 되었습니다~!
이렇게 해서 Raycast를 이용한 간단한 게임을 만들어 보았습니다!!

 

*

라인 렌더러(Line Renderer) - Unity 매뉴얼

Line Renderer 컴포넌트는 3D 공간에서 두 개 이상의 점 배열을 사용하고 각각을 연결하는 직선을 그립니다. 따라서 하나의 라인 렌더러 컴포넌트는 단순한 직선에서 시작해서 복잡한 곡선까지 모두 그릴 수 있습니다. 다만 그려지는 모든 라인은 연속적이어야 합니다. 두 개 이상의 완전히 분리된 선을 그려야 하는 경우, 라인 렌더러를 포함하는 여러 개의 게임 오브젝트를 사용해야 합니다.

 

https://docs.unity3d.com/kr/current/Manual/class-LineRenderer.html

 

라인 렌더러 - Unity 매뉴얼

Line Renderer 컴포넌트는 3D 공간에서 두 개 이상의 지점 배열을 가져와 각각의 점 사이에 직선을 그리는 컴포넌트입니다. 라인 렌더러를 사용하여 간단한 직선에서 복잡한 나선에 이르기까지 모든

docs.unity3d.com

을 참고하였습니다.

반응형