﻿1
00:00:04,350 --> 00:00:04,760
‫Cześć.

2
00:00:04,800 --> 00:00:05,190
‫Powitanie.

3
00:00:05,190 --> 00:00:09,750
‫W tym wykładzie sprawimy, że grabber będzie znacznie bardziej niezawodny.

4
00:00:09,750 --> 00:00:16,860
‫Umożliwimy też upuszczenie przechwyconego komponentu, abyśmy mogli go rzucać i ogólnie sprawić,

5
00:00:16,860 --> 00:00:19,890
‫by był trochę bardziej użyteczny.

6
00:00:19,920 --> 00:00:21,870
‫Zanurzmy się i zobaczmy, jak to się robi.

7
00:00:22,850 --> 00:00:28,430
‫Powodem, dla którego często nie jesteśmy w stanie wychwycić tego gargulca, jest

8
00:00:28,430 --> 00:00:35,990
‫to, że komponenty symulujące fizykę ze względu na wydajność uśpią się, gdy będą nieruchome przez pewien czas.

9
00:00:35,990 --> 00:00:37,310
‫I to właśnie widzimy.

10
00:00:37,310 --> 00:00:43,310
‫Ta symulacja fizyki gargulców będzie spać i nie zostanie wybudzona, gdy dołączymy do niej za

11
00:00:43,310 --> 00:00:45,290
‫pomocą naszego uchwytu fizyki.

12
00:00:45,290 --> 00:00:51,400
‫Więc to, czego musimy się nauczyć, to obudzić go, gdy uderzymy w niego śladem kuli.

13
00:00:51,410 --> 00:00:56,420
‫Teraz chodźmy i przyjrzyjmy się dokumentacji twojego prymitywnego komponentu, którą widzieliśmy.

14
00:00:56,420 --> 00:01:02,420
‫Pierwotny składnik you jest tym, co zwraca wynik naszego trafienia, ale w rzeczywistości jest składnikiem

15
00:01:02,420 --> 00:01:03,260
‫pierwotnym.

16
00:01:03,440 --> 00:01:10,010
‫W dokumentacji jest więc napisane, że prymitywny komponent jest komponentem sceny, który zawiera lub

17
00:01:10,010 --> 00:01:16,160
‫generuje pewien rodzaj geometrii i jest renderowany lub używany jako dane kolizyjne.

18
00:01:16,160 --> 00:01:21,770
‫Ogólnie mówiąc, prymitywne komponenty to takie, które mogą symulować fizykę.

19
00:01:22,130 --> 00:01:27,830
‫Możemy więc spodziewać się, że znajdziemy tutaj kilka metod symulacji fizyki.

20
00:01:27,830 --> 00:01:32,030
‫I będę szukał funkcji ze słowem kluczowym wake.

21
00:01:32,060 --> 00:01:37,820
‫Przyjrzymy się kilku funkcjom, aż znajdziemy taką, która mówi Obudź wszystkie sztywne ciała.

22
00:01:38,270 --> 00:01:43,610
‫Ciała sztywne są zasadniczo terminem fizycznym dla obiektów, które symulują fizykę.

23
00:01:43,610 --> 00:01:44,780
‫Więc widać, że ma pustkę.

24
00:01:44,780 --> 00:01:46,700
‫Typ zwracany nie przyjmuje żadnych argumentów.

25
00:01:46,700 --> 00:01:52,010
‫Powinniśmy więc móc to nazwać, gdy próbujemy się do tego przywiązać.

26
00:01:52,010 --> 00:01:58,220
‫Więc jeśli przejdziemy do naszego przechwycenia CP w naszej instrukcji if, trafiliśmy na ten komponent, zamierzamy go

27
00:01:58,220 --> 00:01:58,610
‫pobrać.

28
00:01:58,610 --> 00:02:04,550
‫Pierwszą rzeczą, którą musimy zrobić, to być może stwórzmy zmienną do przechowywania tego prymitywnego komponentu.

29
00:02:04,550 --> 00:02:15,170
‫Więc będziemy mieli prymitywny wskaźnik komponentu o nazwie zestaw komponentów trafienia, który jest równy wynikowi trafienia

30
00:02:15,470 --> 00:02:17,990
‫kropka pobierz komponent.

31
00:02:18,530 --> 00:02:27,770
‫A następnie używając tego wskaźnika komponentu trafienia, możemy obudzić strzałką wszystkie sztywne ciała, a następnie umieścić nawiasy i

32
00:02:27,770 --> 00:02:29,690
‫średniki na końcu.

33
00:02:29,690 --> 00:02:35,900
‫Więc to powinno dać kopa temu komponentowi, obudzić go, aby reagował na uchwyt fizyki.

34
00:02:35,930 --> 00:02:39,160
‫Teraz zamieńmy miejsce, w którym zrobiliśmy wyniki trafień.

35
00:02:39,200 --> 00:02:46,400
‫Nie pobieraj komponentów w naszym wywołaniu uchwytu fizyki, aby pobrać lokalizację komponentu, ponieważ mamy teraz zmienną do

36
00:02:46,400 --> 00:02:49,460
‫tego i przekompilujmy, gdy to się skończy.

37
00:02:49,460 --> 00:02:56,480
‫Idźmy dalej i włączmy odtwarzanie i pozwólmy gargulcowi usiąść na razie trochę na podłodze i pozwól mu zasnąć,

38
00:02:56,480 --> 00:02:58,910
‫a następnie spróbujmy go podnieść.

39
00:02:58,910 --> 00:03:05,120
‫I zauważysz, że nie mamy problemów z podnoszeniem go, kładzeniem go na podłodze, cokolwiek.

40
00:03:05,120 --> 00:03:12,440
‫Będzie dobrze, obudzimy te sztywne ciała fizyczne i zaczniemy je symulować, aby można je było

41
00:03:12,440 --> 00:03:13,910
‫podnieść i chwycić.

42
00:03:13,910 --> 00:03:18,560
‫Być może zauważyłeś, że obecnie nie jesteśmy w stanie zwolnić

43
00:03:18,560 --> 00:03:23,300
‫uchwytu fizyki, więc Twoim wyzwaniem będzie zrobienie tego w funkcji zwolnienia.

44
00:03:23,360 --> 00:03:26,570
‫Więc zamierzasz wywołać komponent release na tym uchwycie fizyki.

45
00:03:26,570 --> 00:03:29,660
‫Jest to funkcja dostępna na wskaźniku uchwytu fizyki.

46
00:03:29,840 --> 00:03:34,910
‫Najpierw sprawdzisz, czy mamy jakiś komponent.

47
00:03:34,910 --> 00:03:40,040
‫Więc jeśli otrzymasz komponent grab, który zwraca wskaźnik do komponentu grab, punkty te będą

48
00:03:40,040 --> 00:03:43,010
‫puste, jeśli uchwyt fizyki aktualnie niczego nie przechwytuje.

49
00:03:43,010 --> 00:03:48,110
‫Możesz więc użyć tego, aby sprawdzić, czy coś mamy i zwolnić tylko wtedy, gdy aktualnie coś

50
00:03:48,110 --> 00:03:48,530
‫łapiemy.

51
00:03:48,530 --> 00:03:53,090
‫A jako bonus możesz spróbować, czy uda nam się ponownie ustawić cel.

52
00:03:53,090 --> 00:03:58,070
‫Tylko jeśli coś łapiemy, ale obejrzyj wideo i spróbuj.

53
00:04:01,590 --> 00:04:02,470
‫Witamy spowrotem.

54
00:04:02,490 --> 00:04:06,090
‫Więc wejdźmy po filiżankę.

55
00:04:06,230 --> 00:04:10,490
‫Zamierzam przejść do funkcji zwolnienia i usunąć dziennik wydań.

56
00:04:10,500 --> 00:04:16,650
‫I tutaj umieścimy zdanie if i powiemy, czy i teraz musimy sięgnąć po

57
00:04:16,650 --> 00:04:18,360
‫nasze uchwyty fizyki.

58
00:04:18,360 --> 00:04:25,650
‫Więc najpierw zrobimy wskaźnik komponentu uchwytu fizyki, który nazwiemy uchwytem fizyki i

59
00:04:25,650 --> 00:04:31,410
‫ustawimy go na równy, aby uzyskać uchwyt fizyki.

60
00:04:31,590 --> 00:04:40,770
‫Więc wtedy powiemy, że jeśli uchwyt fizyki jest równy null wskaźnikowi, chcemy iść dalej i wrócić, ponieważ nie

61
00:04:40,770 --> 00:04:44,400
‫będziemy w stanie nic zrobić, niczego zwolnić.

62
00:04:44,400 --> 00:04:51,330
‫Jeśli w ogóle nie mamy uchwytu fizyki, chcemy sprawdzić, czy aktualnie trzymamy się czegoś za pomocą

63
00:04:51,330 --> 00:04:52,650
‫naszego uchwytu fizyki.

64
00:04:52,650 --> 00:05:03,390
‫Więc jeśli, powiedzmy, jeśli strzałka uchwytu fizyki zostanie przechwycona, nawiasy nie równają się pustemu wskaźnikowi, to wewnątrz treści instrukcji

65
00:05:04,080 --> 00:05:09,420
‫if oznacza, że coś jest aktualnie przechwycone, cóż, wtedy

66
00:05:09,420 --> 00:05:16,980
‫zrobimy komponent zwalniający strzałkę uchwytu fizyki , co pozwoli mu odejść, jak sugeruje

67
00:05:16,980 --> 00:05:17,730
‫nazwa.

68
00:05:17,730 --> 00:05:24,450
‫I jednej rzeczy, której nie zrobiłem w tym kodzie, ale prawdopodobnie warto dodać do swojego, to

69
00:05:24,450 --> 00:05:32,160
‫to, że zanim wypuścimy komponent, warto iść dalej i wywołać get chwycone komponenty, a następnie dodać słabe wszystkie

70
00:05:32,160 --> 00:05:36,180
‫sztywne bryły, tak jak to zrobiliśmy zanim chwycimy komponent.

71
00:05:36,180 --> 00:05:41,520
‫Ponieważ gdybyśmy mieli wyhodować jakiś komponent i przez chwilę nie poruszać się, może on również iść spać.

72
00:05:41,520 --> 00:05:43,470
‫A więc wypuszczenie go nic by nie dało.

73
00:05:43,470 --> 00:05:51,300
‫Warto to dodać, ponieważ złapałoby to przypadek narożny i nie chcemy ustawiać lokalizacji docelowej w

74
00:05:51,300 --> 00:05:56,790
‫tiku, jeśli mamy uchwyt fizyki, który obecnie niczego nie chwyta.

75
00:05:56,790 --> 00:06:02,190
‫Więc tutaj, w naszych komponentach tikowych, umieścimy instrukcję if, która będzie dokładnie taka sama.

76
00:06:02,190 --> 00:06:11,730
‫Będzie to oznaczało, że strzałka uchwytu fizyki złapała komponent nie równy wskaźnikowi zerowemu.

77
00:06:11,760 --> 00:06:18,810
‫Następnie w treści instrukcji if umieścimy obliczenia lokalizacji docelowej i ustawienie lokalizacji

78
00:06:18,810 --> 00:06:22,380
‫docelowej również w tym uchwycie fizyki.

79
00:06:22,380 --> 00:06:24,330
‫Przekompilujmy i wypróbujmy to.

80
00:06:24,330 --> 00:06:26,070
‫Chodźmy dalej i włączmy odtwarzanie.

81
00:06:26,970 --> 00:06:28,920
‫I spróbuj złapać gargulca.

82
00:06:28,920 --> 00:06:33,420
‫A potem, jeśli puszczę mysz, znowu spadnie na podłogę.

83
00:06:33,420 --> 00:06:39,000
‫Więc wydaje się, że nie ma na to wpływu to, czy jest na jawie, czy śpi.

84
00:06:39,000 --> 00:06:43,610
‫Wydaje się, że się budzimy, bez względu na to, czy za każdym razem, gdy to podnosimy, zasadniczo.

85
00:06:43,620 --> 00:06:46,950
‫Wygląda więc na to, że działa dokładnie tak, jak bym tego chciał.

86
00:06:46,950 --> 00:06:47,910
‫Nie utknie.

87
00:06:47,910 --> 00:06:49,950
‫To jest prawie właściwe.

88
00:06:49,980 --> 00:06:56,520
‫Jedyną dziwną rzeczą jest to, że kiedy się w nią wchodzę, widać, że robi to dziwne

89
00:06:56,520 --> 00:06:59,550
‫drganie, ponieważ faktycznie koliduje z graczem.

90
00:06:59,550 --> 00:07:06,840
‫Teraz możemy to trochę naprawić, przechodząc do naszego gargulca w panelu szczegółów, wybierając wszystkie kategorie, przewijając

91
00:07:06,840 --> 00:07:13,950
‫w dół do kolizji i patrząc na nasze niestandardowe ustawienia kolizji i w dół

92
00:07:13,950 --> 00:07:15,510
‫w odpowiedziach obiektów.

93
00:07:15,510 --> 00:07:17,760
‫Więcej na ten temat zobaczymy później.

94
00:07:17,760 --> 00:07:20,910
‫Jest odpowiedź obiektu pionkiem.

95
00:07:20,910 --> 00:07:25,650
‫To w zasadzie mówi, czy powinienem zderzyć się z pionkiem, czy co?

96
00:07:25,680 --> 00:07:27,570
‫Jaka powinna być moja odpowiedź na pionka?

97
00:07:27,570 --> 00:07:31,740
‫No cóż, ustawię go tak, aby pokrywał się z pionkiem.

98
00:07:31,740 --> 00:07:36,690
‫A to oznacza, że jeśli się ze mną zderzy, to w zasadzie po prostu to ignoruje.

99
00:07:36,690 --> 00:07:41,880
‫I jeszcze jedna rzecz, którą musimy zrobić, to fakt, że składa się ona z dwóch siatek

100
00:07:41,880 --> 00:07:43,890
‫statycznych, mają one własne ustawienia kolizji.

101
00:07:43,890 --> 00:07:46,320
‫Zejdę do kopca ziemi.

102
00:07:46,320 --> 00:07:48,720
‫To jest rzecz pod gargulcem.

103
00:07:49,110 --> 00:07:52,350
‫I tutaj zamierzam tylko uprościć rzeczy.

104
00:07:52,350 --> 00:07:57,480
‫Zamierzam zrobić część kopca ziemi, bez kolizji.

105
00:07:57,490 --> 00:08:00,300
‫Więc przestawię go na ustawienie bez kolizji.

106
00:08:00,510 --> 00:08:05,250
‫Potem pójdę dalej i wcisnę odtwarzanie, podniosę gargulca z podłogi.

107
00:08:05,250 --> 00:08:09,540
‫A teraz widać, że kiedy z nim biegnę, nie

108
00:08:09,540 --> 00:08:14,730
‫ma żadnego dziwnego glitchingu, ponieważ nie próbuje kolidować z siatką kolizji gracza.

109
00:08:14,760 --> 00:08:15,540
‫Świetne rzeczy.

110
00:08:15,540 --> 00:08:22,170
‫W tym wykładzie nauczyliśmy się, jak sprawić, by nasz grab był o wiele bardziej niezawodny, a także

111
00:08:22,170 --> 00:08:23,790
‫jak uwolnić komponent chwytający.

112
00:08:23,790 --> 00:08:24,510
‫Świetne rzeczy.

113
00:08:24,510 --> 00:08:26,190
‫Do zobaczenia na następnym wykładzie.

