0:00:00.000,0:00:02.100 Raycast는 광선 경로에 0:00:02.100,0:00:04.280 충돌체가 있는지 감지하기 위해 0:00:04.280,0:00:06.770 특정 방향의 점에서 보이지 않는 0:00:06.770,0:00:08.770 광선을 발사하는 과정입니다 0:00:08.770,0:00:10.770 총을 쏘는 것이 한 예입니다 0:00:10.770,0:00:12.870 이 인스턴스에서는 0:00:12.870,0:00:14.870 캐릭터는 자신을 배신하고 아버지를 죽인 0:00:14.870,0:00:16.870 악마의 상자를 쏴버리고 싶어 합니다 0:00:17.370,0:00:20.100 raycast 함수 문법은 이렇습니다 0:00:20.100,0:00:22.100 처음에는 혼동될 수 있지만 0:00:22.100,0:00:24.530 각 부분을 이해하면 0:00:24.530,0:00:26.200 구성에 수긍하실 겁니다 0:00:26.200,0:00:28.200 처음으로 광선의 시작은 0:00:28.200,0:00:30.200 세계 공간의 점입니다 0:00:30.200,0:00:32.200 그러므로 이 인스턴스에서 0:00:32.200,0:00:34.200 Vector3, X, Y 및 Z축 위치에 저장된 0:00:34.200,0:00:37.580 총신 앞의 점을 선택했습니다 0:00:37.920,0:00:39.920 그러나 세계 좌표 방향이 발사하려는 0:00:39.920,0:00:41.930 방향을 향하고 있지 않아 0:00:41.930,0:00:44.420 방향이 저장되어 있는 두 번째 Vector3가 0:00:44.420,0:00:46.210 필요합니다 0:00:46.210,0:00:48.210 이 두 Vector3 변수는 광선을 구성합니다 0:00:48.210,0:00:51.160 하지만 Ray 변수로 대체할 수도 있으며 0:00:51.160,0:00:53.690 해당 변수의 데이터 유형은 0:00:53.690,0:00:55.690 두 Vector3에 저장할 수 있습니다 0:00:55.690,0:00:57.690 코드는 이런 모양이 될 것입니다 0:01:02.380,0:01:04.200 함수의 다음 인수는 0:01:04.200,0:01:06.200 충돌체 충돌의 정보를 저장하는 0:01:06.200,0:01:08.140 RaycastHit 변수입니다 0:01:08.450,0:01:10.450 어떤 오브젝트가 광선을 교차하는지 0:01:10.450,0:01:12.850 코드에서 쿼리할 수 있습니다 0:01:13.150,0:01:15.610 마지막으로 선택적 인수 두 개입니다 0:01:15.610,0:01:17.610 거리는 광선 길이를 0:01:17.610,0:01:19.610 정의하며 생략하면 기본값인 0:01:19.610,0:01:21.610 무한 길이가 됩니다 0:01:21.610,0:01:23.610 다음은 레이어 마스크이며 0:01:23.610,0:01:26.550 Unity의 레이어 시스템에 있는[br]특정 레이어 수이며 0:01:26.550,0:01:28.550 광선이 무시하는 오브젝트를 0:01:28.550,0:01:30.220 배치할 수 있습니다 0:01:30.220,0:01:32.220 Raycast를 사용한 다른 예를 0:01:32.220,0:01:33.510 살펴봅시다 0:01:33.510,0:01:35.890 이 예제는 바닥에 가까이 갈 때 0:01:35.890,0:01:37.360 낙하산이 펴지는 낙하산 상자가 0:01:37.360,0:01:39.200 나옵니다 0:01:40.460,0:01:42.260 상자에는 부품이 2개 있습니다 0:01:42.260,0:01:44.030 슈트와 상자 자체가 그것입니다 0:01:44.030,0:01:46.030 슈트에는 슈트를 여는 것과 0:01:46.530,0:01:48.040 닫는 것, 이렇게 두 개의 0:01:48.600,0:01:50.030 애니메이션이 있습니다 0:01:50.920,0:01:52.920 이 예제에서는 상자가 바닥에 얼마나 0:01:52.920,0:01:55.330 떨어져 있는지 확인하기 위해 광선을 0:01:55.330,0:01:57.330 아래쪽으로 쏠 것이며 0:01:57.330,0:02:00.120 환경에 적용된 충돌체를 찾아[br]바닥을 확인할 것입니다 0:02:00.620,0:02:03.150 환경용 충돌체는 environment라는 단어로 0:02:03.150,0:02:04.690 태깅되어 있습니다 0:02:05.400,0:02:09.200 스크립트에서 해당 태그를 찾아보겠습니다 0:02:10.880,0:02:12.480 RayCast 함수가 IF문 안에 있어 0:02:12.480,0:02:15.660 아무 것이나 교차했다는 뜻인 0:02:15.660,0:02:17.660 true를 반환하면 0:02:17.660,0:02:19.660 IF문의 주석이 실행되고 0:02:19.660,0:02:21.660 RayCastHit 변수가 충돌한 0:02:21.660,0:02:25.240 것을 쿼리합니다 0:02:26.240,0:02:29.180 Physics.Raycast를 작성한 0:02:29.180,0:02:32.860 IF문에 상자 위치와 아래쪽 방향을 저장하는 0:02:32.860,0:02:35.710 landingRay 변수가 있습니다 0:02:35.710,0:02:37.710 Vector3.down 바로 가기를 0:02:37.710,0:02:39.710 광선을 쏘는 데 0:02:39.710,0:02:41.960 사용할 것입니다 0:02:41.960,0:02:44.370 RaycastHit 변수 'hit'는 0:02:44.370,0:02:46.370 아래쪽으로 쏠 때 광선과 충돌하는 0:02:46.370,0:02:48.370 모든 것을 저장하고 거리, 0:02:48.370,0:02:50.370 'length' 또는 광선은 0:02:50.370,0:02:53.410 'deployment height' 변수로 정의합니다 0:02:53.410,0:02:55.860 광선이 충돌체와 교차하면 0:02:58.860,0:03:01.800 deploy parachute 함수를 호출합니다 0:03:02.300,0:03:04.760 이 함수는 Boolean 'deployed' 플래그를 0:03:04.760,0:03:08.190 true로 설정해 반복할 수 없게 합니다 0:03:08.690,0:03:11.020 그리고 rigidbody의 Drag를 0:03:11.020,0:03:13.900 'parachuteEffectiveness' 변수로 설정합니다 0:03:13.900,0:03:15.900 이렇게 해서 낙하산이 펴지면 0:03:15.900,0:03:17.580 상자가 느리게 내려갑니다 0:03:17.580,0:03:19.580 또한 공용 변수에 할당하는 0:03:19.580,0:03:21.580 게임 오브젝트인 낙하산 0:03:21.580,0:03:23.580 오브젝트에서 애니메이션을 0:03:23.580,0:03:25.160 재생합니다 0:03:25.360,0:03:27.940 separate OnCollisionEnter 함수는 0:03:27.940,0:03:29.940 접는 애니메이션을 재생합니다 0:03:29.940,0:03:31.940 상자가 땅에 내려오거나 다른 오브젝트와 0:03:31.940,0:03:34.720 충돌하면 낙하산이 접힙니다 0:03:36.440,0:03:39.570 deployment height를 4로 설정해 0:03:39.570,0:03:41.810 광선 길이를 4로 정합니다 0:03:42.030,0:03:45.420 그리고 parachute effectiveness를 8로 설정해 0:03:45.670,0:03:48.620 rigidbody 끌기를 8로 정합니다 0:03:48.620,0:03:50.620 이제 낙하산 슈트 오브젝트를 0:03:50.620,0:03:54.270 parachute 변수로 끕니다 0:03:54.270,0:03:57.120 오브젝트에는 재생할 애니메이션 컴포넌트가 0:03:57.120,0:03:59.120 있어 펴는 것과 접는 0:03:59.120,0:04:01.120 애니메이션이 됩니다 0:04:01.120,0:04:03.120 이제 한 번 더 재생해 봅시다 0:04:06.680,0:04:08.680 씬 뷰나 게임에서는 0:04:08.680,0:04:10.680 광선 투시를 볼 수 있는 0:04:10.680,0:04:13.090 것에 주의하십시오 0:04:13.090,0:04:15.490 또한 Debug.DrawRay 함수를 0:04:15.490,0:04:18.010 사용하여 광선이 0:04:18.010,0:04:21.050 비춰지는 부분을 미리 볼 수 있습니다 0:04:21.050,0:04:23.500 Debug.DrawRay를 0:04:23.500,0:04:25.500 추가하여 Vector3.down 방향에서 0:04:25.500,0:04:27.500 상자 위치에 대한 광선을 0:04:27.500,0:04:30.080 시각적으로 그리고 0:04:30.080,0:04:33.730 기존 광선 길이인[br]deployment height를 곱합니다 0:04:33.730,0:04:35.730 이렇게 하여 아래 IF문에서 쏘는 0:04:35.730,0:04:38.240 실제 광선을 일치시킵니다 0:04:38.550,0:04:40.550 다시 재생하면 Unity는 씬 뷰에서 0:04:40.550,0:04:42.550 그려진 광선을 0:04:42.550,0:04:45.890 표시하여 광선을 보여줍니다