﻿1
00:00:04,080 --> 00:00:05,730
‫Merhaba ve tekrar hoş geldiniz.

2
00:00:05,760 --> 00:00:10,380
‫Şimdi tareti döndürmeye hazırız ve bunu fareyi kullanarak yapmak istiyoruz.

3
00:00:10,380 --> 00:00:14,790
‫Ve bu vuruş yeri bir önceki videoda yaptığımız iz vuruşundan.

4
00:00:14,880 --> 00:00:22,200
‫Yani ben fare imlecimi hareket ettirirken, taret dönüyor ve fare imlecinin yönüne bakıyor.

5
00:00:22,320 --> 00:00:28,110
‫Ve görüntü alanına tıklayıp oynamaya başladığımda bile, tareti döndürmek ve yönünü ayarlamak

6
00:00:28,110 --> 00:00:31,080
‫için fare imlecini hareket ettirebiliyorum.

7
00:00:31,110 --> 00:00:35,850
‫Bu, mermileri ateşleme kabiliyetine sahip olduğumda nişan almamı sağlayacak.

8
00:00:35,880 --> 00:00:36,200
‫Tamam.

9
00:00:36,240 --> 00:00:41,770
‫Bunu başarmak için taretimizin işaret etmesini istediğimiz yönü bulmamız gerekiyor.

10
00:00:41,790 --> 00:00:46,410
‫Ve bu yönü bulduktan sonra, taret ağının dönüşünü ayarlayabiliriz.

11
00:00:46,500 --> 00:00:52,470
‫Şimdi, taretin işaret etmesini istediğimiz yönü elde etmek için biraz vektör matematiği yapmamız

12
00:00:52,470 --> 00:00:53,500
‫gerekiyor.

13
00:00:53,520 --> 00:00:59,570
‫Aradığımız şey, tank taretinden iz vuruş konumumuza kadar olan bir vektör.

14
00:00:59,580 --> 00:01:05,940
‫Artık tankımızın veya tankın taretinin konumu gibi bileşenlerinden herhangi birinin konumunu kolayca

15
00:01:05,940 --> 00:01:06,960
‫alabiliriz.

16
00:01:06,990 --> 00:01:09,600
‫Buraya konum, taret, konum diyeceğiz.

17
00:01:09,600 --> 00:01:13,440
‫Ayrıca izleme kafasının yerini nasıl bulabileceğimizi de biliyoruz.

18
00:01:13,470 --> 00:01:15,800
‫Bu izi isabet konumu olarak adlandıracağız.

19
00:01:15,810 --> 00:01:20,760
‫İlgilendiğimiz şey, taret konumundan iz vuruş konumuna kadar olan vektördür.

20
00:01:20,760 --> 00:01:23,100
‫Bu vektörü hedef olarak adlandıracağız.

21
00:01:23,130 --> 00:01:27,030
‫Şimdi hedefe ulaşmak için vektör matematiği aslında oldukça basittir.

22
00:01:27,060 --> 00:01:33,120
‫Bir başlangıç noktasından bir bitiş noktasına bir vektör elde etmek için her zaman bitiş noktası eksi başlangıç noktasıdır.

23
00:01:33,420 --> 00:01:39,270
‫Yani izimizi, isabet konumumuzu alır ve vektör taret konumunu çıkarırsak, bunun sonucunda

24
00:01:39,270 --> 00:01:41,620
‫ortaya çıkan vektör hedefe gider.

25
00:01:41,640 --> 00:01:47,160
‫Şimdi, iki hedef yön vektörüne sahip olduğumuzda, bunu bir dönüşe dönüştürmek istiyoruz, böylece tankın

26
00:01:47,160 --> 00:01:49,530
‫taretinin dönüşünü ayarlayabiliriz.

27
00:01:49,530 --> 00:01:53,750
‫Ve vektör türünün rotasyon adı verilen yerleşik bir işlevi vardır.

28
00:01:53,760 --> 00:02:01,230
‫Dolayısıyla, hedef vektörümüzü alıp üzerinde rotasyon çağrısı yaparsak, bu, o yöne karşılık gelen bir F döndürücü

29
00:02:01,230 --> 00:02:02,260
‫döndürür.

30
00:02:02,280 --> 00:02:04,430
‫Şimdi bir şeyi aklımızda tutmamız gerekiyor.

31
00:02:04,440 --> 00:02:11,160
‫İz vuruş sonucu genellikle yerde olacaktır ve tank taretinden iz vuruş sonucuna

32
00:02:11,160 --> 00:02:14,620
‫giden vektör yere paralel olmayacaktır.

33
00:02:14,640 --> 00:02:20,850
‫Bu, tankın taret dönüşünü bu yön vektöründen elde ettiğimiz döndürücüye ayarlarsak, taretin yere

34
00:02:20,850 --> 00:02:26,790
‫doğru açılı olduğu, ancak tank taretinin aşağı doğru dönmesini istemediğimiz gibi bir şey elde

35
00:02:26,790 --> 00:02:29,310
‫edebileceğimiz anlamına gelir.

36
00:02:29,310 --> 00:02:31,350
‫Hâlâ ileriyi göstermesini istiyoruz.

37
00:02:31,350 --> 00:02:33,780
‫Yani istediğimiz sonuç bu.

38
00:02:33,810 --> 00:02:39,180
‫Başka bir deyişle, tankın taret dönüşünün sadece yea bileşenini değiştirmek istiyoruz.

39
00:02:39,180 --> 00:02:44,550
‫Bu şekilde doğru yöne bakıyor ama yine de yere paralel kalıyor.

40
00:02:44,550 --> 00:02:51,600
‫Sadece sapmasını değiştirdik, bu yüzden VS koduna geri dönelim ve tank taretini döndürmek için bir fonksiyon oluşturalım.

41
00:02:51,630 --> 00:02:57,210
‫Şimdi tank üzerindeki tareti döndüreceğiz, ancak kule düşmanımız üzerindeki tareti de

42
00:02:57,210 --> 00:03:04,290
‫döndürmek istiyoruz ve kule yakında temel pon'dan türetilerek oluşturulacak, yani bir taret döndürme işlevi

43
00:03:04,290 --> 00:03:08,820
‫oluşturursak bunu buraya temel pong sınıfına yerleştirebiliriz.

44
00:03:08,820 --> 00:03:12,930
‫Bu şekilde hem tank hem de kule bu işlevi devralacaktır.

45
00:03:12,930 --> 00:03:18,480
‫Hem kulede hem de tankta kullanmayı planladığımız için bu işlevi korumalı hale getirebiliriz.

46
00:03:18,720 --> 00:03:24,630
‫Bu yüzden korumalı bir bölüm ekleyeceğim ve korumalı bölüme yerleştirdiğimiz tüm fonksiyonlar ve değişkenler

47
00:03:24,630 --> 00:03:29,220
‫bu alt sınıflarda erişilebilir olacak, ancak başka hiçbir sınıfta erişilemeyecek.

48
00:03:29,220 --> 00:03:32,580
‫Yani neredeyse özel değişkenler kadar kısıtlıdır.

49
00:03:32,580 --> 00:03:34,860
‫Artık bu fonksiyon void döndürebilir.

50
00:03:34,860 --> 00:03:37,710
‫Buna döner taret diyeceğim.

51
00:03:38,850 --> 00:03:44,690
‫Ve tareti döndürmek için, bakabileceğim bir hedefe ihtiyacım olacak.

52
00:03:44,700 --> 00:03:49,620
‫Bu bir f vektörü olabilir ve biz buna hedefe bak diyebiliriz.

53
00:03:49,620 --> 00:03:56,490
‫Yani fikir şu ki, dünyada bir tür konum girebileceğimiz bir fonksiyonumuz varsa, fonksiyon taretin

54
00:03:56,490 --> 00:04:00,360
‫o konuma doğru dönmesiyle sonuçlanmalıdır.

55
00:04:00,360 --> 00:04:04,680
‫Şimdi devam edelim ve rotate turret için bir fonksiyon tanımı sağlayalım.

56
00:04:04,680 --> 00:04:11,280
‫Burada, temel piyon CP'de, yapıcının hemen altında, döndürme taretini uygulayacağım.

57
00:04:11,280 --> 00:04:16,680
‫Ve tabii ki burada kapsam çözümleme operatörüyle birlikte bir temel piyon sınıfı adına ihtiyacım var.

58
00:04:16,680 --> 00:04:21,180
‫Şimdi tareti döndürdüğüme göre, bunu nasıl uygulayacağımızı düşünelim.

59
00:04:21,180 --> 00:04:28,320
‫İhtiyacımız olan ilk şey, taret bileşeninden fare imlecinin altındaki iz vuruş sonucuna kadar olan

60
00:04:28,320 --> 00:04:30,120
‫vektörü hedeflemektir.

61
00:04:30,120 --> 00:04:38,970
‫Yani bu, target'a çağrılan yerel bir F vektörü olabilir ve bunu bazı vektör matematiğinin sonucuna eşit olarak ayarlayacağız.

62
00:04:38,970 --> 00:04:43,350
‫Unutmayın, varış noktası eksi başlangıç noktası olacak.

63
00:04:43,350 --> 00:04:50,910
‫Hedef, hedefe bakmaktır ve başlangıç noktası tankın taretinin konumu, diğer bir deyişle

64
00:04:50,910 --> 00:04:54,030
‫taret ağının konumu olacaktır.

65
00:04:54,030 --> 00:04:59,880
‫Böylece taret ağı diyebiliriz ve taret ağı konumunu alabiliriz.

66
00:04:59,880 --> 00:05:07,290
‫Şimdi bir bileşenin dünya konumunu elde etmenin yolu bu get component location fonksiyonunu kullanmaktır.

67
00:05:07,290 --> 00:05:09,630
‫Kullanım sahnesi bileşeni sınıfına aittir.

68
00:05:09,630 --> 00:05:11,460
‫Yani tüm sahne bileşenleri buna sahiptir.

69
00:05:11,460 --> 00:05:15,690
‫Bu yüzden taret ağından bileşen konumunu al diyeceğiz.

70
00:05:16,340 --> 00:05:23,600
‫Yani hedefe bak eksi taret ağı konumu bize taret ağından gözetleme hedefine giden vektörü

71
00:05:23,600 --> 00:05:24,290
‫verir.

72
00:05:24,320 --> 00:05:30,590
‫Şimdi, bahsettiğim gibi, F vektörleri döndürme işlevini kullanarak hedeften hedefe bir EF döndürücü elde edebiliriz.

73
00:05:30,590 --> 00:05:37,100
‫Bu yüzden bir F döndürücü oluşturacağız ve buna rotasyona bak diyebiliriz ve bunu hedef nokta

74
00:05:37,100 --> 00:05:40,100
‫rotasyonuna eşit olarak ayarlayacağız.

75
00:05:40,280 --> 00:05:41,570
‫Bu bir fonksiyon çağrısı.

76
00:05:41,570 --> 00:05:46,700
‫Şimdi bu hedef yön vektörüne karşılık gelen döndürücümüz var.

77
00:05:46,700 --> 00:05:49,550
‫Ama mesele şu ki biz sadece YA'yı önemsiyoruz.

78
00:05:49,550 --> 00:05:51,680
‫Sahayı ya da rolü değiştirmek istemiyoruz.

79
00:05:51,680 --> 00:05:57,290
‫Tareti sadece z ekseni etrafında döndürmek ve yere paralel tutmak istiyoruz.

80
00:05:57,290 --> 00:05:59,420
‫Şimdi bunu birçok şekilde yapabiliriz.

81
00:05:59,420 --> 00:06:05,870
‫Birincisi, rotasyona, atış mesafesine bakabilir ve bunları sıfırlayabiliriz.

82
00:06:05,870 --> 00:06:08,180
‫Başka bir deyişle, sıfıra eşit olarak ayarlayın.

83
00:06:08,210 --> 00:06:14,240
‫Ayrıca rotasyon noktası rolüne de bakabilir ve bunu da sıfırlayabiliriz.

84
00:06:14,240 --> 00:06:21,020
‫Şimdi eğim ve yuvarlanmayı sıfıra ayarladıktan sonra, sadece bileşen olan istediğimiz dönüşe sahibiz.

85
00:06:21,020 --> 00:06:22,460
‫Bunu yapmanın bir yolu da bu.

86
00:06:22,460 --> 00:06:26,450
‫Bir diğeri de F döndürücü kurucu aşırı yüklerinden birini kullanmak olabilir.

87
00:06:26,450 --> 00:06:34,820
‫Parantez içinde f rotator dersek ve ilk değer için sıfır noktası F gibi bazı değerler girersek, açılır pencere bana

88
00:06:34,820 --> 00:06:38,300
‫bu ilk girdinin pitch olduğunu söylüyor.

89
00:06:38,300 --> 00:06:43,880
‫Ve sonra rotasyonu hedeflemek için kullanabileceğimiz ya için.

90
00:06:44,330 --> 00:06:44,990
‫Evet.

91
00:06:44,990 --> 00:06:47,960
‫Ve sonra rol için sıfır nokta F kullanabiliriz.

92
00:06:47,960 --> 00:06:55,820
‫Şimdi bunun yaptığı şey, eğim için sıfır, rol için sıfır ve iki hedef rotasyon tarafından döndürülen döndürücünün

93
00:06:55,820 --> 00:06:59,420
‫bileşeni ile yeni bir F döndürücü oluşturmaktır.

94
00:06:59,420 --> 00:07:05,300
‫Dolayısıyla, bunun döndürdüğü değer bize burada bu üç satırla yaptığımızla aynı sonucu verecektir.

95
00:07:05,300 --> 00:07:11,990
‫Bu biraz daha kompakt ve zarif olduğundan, sanırım bunu kullanmayı tercih edeceğim, böylece F rotator

96
00:07:11,990 --> 00:07:19,370
‫yapıcısını bu şekilde çağırarak döndürülen F rotator ile rotasyon vektörüne bakmayı başlatabiliriz.

97
00:07:19,370 --> 00:07:21,380
‫Bu yüzden buradaki satırı kaldıracağım.

98
00:07:21,380 --> 00:07:23,360
‫Ve şimdi rotasyona bakıyoruz.

99
00:07:23,360 --> 00:07:29,000
‫Şimdi bu işlevde yapılacak son şey, taret püre için dönüşü ayarlamaktır.

100
00:07:29,000 --> 00:07:36,440
‫Şimdi bu fonksiyonu kullanarak belirli bir bileşen için rotasyonu ayarlayabiliriz set world rotation tekrar, sahne bileşenini

101
00:07:36,440 --> 00:07:38,270
‫kullanmaya aittir.

102
00:07:38,270 --> 00:07:44,300
‫Bir tür yerel rotasyon ofseti eklemek yerine kelime rotasyonu ayarını kullanmamızın nedeni,

103
00:07:44,300 --> 00:07:50,420
‫dünya uzayında bir rotasyonumuz olması ve iki hedefin bir dünya uzayı yön vektörü olmasıdır.

104
00:07:50,420 --> 00:07:56,750
‫Dünya uzayındaki taret ağ konumunu alıyoruz ve dünya uzayındaki hedef konuma bakışı çıkarıyoruz.

105
00:07:56,750 --> 00:07:58,850
‫Yani bu bir dünya uzay yönüdür.

106
00:07:58,850 --> 00:08:02,450
‫Bu nedenle rotasyona bakış bir dünya uzayı rotasyonudur.

107
00:08:02,450 --> 00:08:06,140
‫Bu yüzden taret ağında dünya rotasyonunu ayarlamayı kullanacağız.

108
00:08:06,290 --> 00:08:13,280
‫Bu yüzden taret ağı diyeceğiz, dünya rotasyonunu ayarlayacağız ve rotasyona bakmayı geçeceğiz.

109
00:08:13,280 --> 00:08:19,550
‫Artık dünyadaki herhangi bir hedefi alıp taret ağını ona bakacak şekilde döndürebilen bir işlevimiz

110
00:08:19,550 --> 00:08:22,550
‫var, ancak ağı aşağı doğru döndürmeyecek.

111
00:08:22,550 --> 00:08:28,100
‫Sadece sapmasını değiştirecek, yani bir tank taretinin dönmesi gerektiği şekilde dönecek.

112
00:08:28,100 --> 00:08:31,100
‫Artık tareti döndürmek için bir fonksiyonumuz var.

113
00:08:31,130 --> 00:08:36,980
‫Taret rotasyonunu ayarlamak için bu işlevi çağırmanız konusunda sizi zorlayacağım, tank sınıfındaki

114
00:08:36,980 --> 00:08:38,870
‫rotate turret işlevini çağırın.

115
00:08:38,870 --> 00:08:40,730
‫Bu korumalı bir işlevdir.

116
00:08:40,730 --> 00:08:43,070
‫Yani tank sınıfının buna erişimi var.

117
00:08:43,070 --> 00:08:49,220
‫Şimdi döndürme tareti bir F vektörü alır, hedefe bakar, çizgi izimizden F vuruş sonucundaki bu çarpma

118
00:08:49,220 --> 00:08:51,410
‫noktasını kullanacaksınız.

119
00:08:51,410 --> 00:08:57,170
‫Bu yüzden bu fonksiyonu çağırmak için kodda doğru yeri bulmayı size bırakacağım.

120
00:08:57,410 --> 00:09:00,920
‫Bu yüzden videoyu duraklatın ve taret döndürme işlevini yerleştirin.

121
00:09:00,920 --> 00:09:02,870
‫Tank sınıfını çağırın.

122
00:09:06,000 --> 00:09:06,150
‫Tamam.

123
00:09:06,300 --> 00:09:09,960
‫Böylece rotate turret fonksiyonumuz var ve onu çağırmaya hazırız.

124
00:09:10,140 --> 00:09:18,200
‫Tankın içine gireceğim ve işte oyuncu kontrolörü ref için if kontrolünün içindeki tik fonksiyonum.

125
00:09:18,210 --> 00:09:24,870
‫İsabet sonucum var ve imleç altında bir isabet sonucu al çağrıldıktan sonra, isabet sonucu geçerli verilere

126
00:09:24,870 --> 00:09:25,860
‫sahip olacak.

127
00:09:25,860 --> 00:09:30,480
‫Aslında, bu vuruş sonucu etki noktasını kullanıyoruz ve hata ayıklama küresi çiziyoruz.

128
00:09:30,510 --> 00:09:35,370
‫Artık hata ayıklama küresini çizmeme gerek olmadığından, devam edip bunu sileceğim.

129
00:09:35,370 --> 00:09:39,900
‫Ve bunun yerine korumalı fonksiyonumuz rotate turret'i çağıracağım.

130
00:09:39,900 --> 00:09:45,750
‫Ve hedefe bakmak için, isabet sonucu nokta çarpma noktasını geçeceğim.

131
00:09:47,140 --> 00:09:53,320
‫Şimdi her karede tareti vuruş sonucumuzdaki çarpma noktasına doğru döndürüyor olacağız.

132
00:09:53,350 --> 00:09:59,050
‫Şimdi bunu derlemeden önce, artık hata ayıklama yardımcılarını kullanmıyorum, bu yüzden devam edeceğim ve bu başlık dosyasını

133
00:09:59,050 --> 00:10:00,130
‫kaldıracağım.

134
00:10:00,340 --> 00:10:00,820
‫Tamam.

135
00:10:00,850 --> 00:10:02,590
‫Şimdi derlemeye hazırım.

136
00:10:02,970 --> 00:10:03,360
‫Tamam.

137
00:10:03,370 --> 00:10:05,050
‫Editörlüğe geri döndüm.

138
00:10:05,080 --> 00:10:09,440
‫Devam edelim ve oynat tuşuna basıp kontrol edelim.

139
00:10:09,460 --> 00:10:11,460
‫Bu inanılmaz.

140
00:10:11,470 --> 00:10:12,910
‫Hala yuvarlanabiliyorum.

141
00:10:12,910 --> 00:10:18,910
‫Faremi hareket ettirebiliyorum ve fare imlecimi hareket ettirdiğim her yerde taret dönüyor.

142
00:10:18,910 --> 00:10:20,350
‫Yani bu harika.

143
00:10:20,600 --> 00:10:25,750
‫Tamam, bu konuyu kapatmadan önce birkaç konuya değinmek istiyorum.

144
00:10:25,750 --> 00:10:28,900
‫Bunun güzel ve cilalı olmasını ve harika görünmesini istiyorum.

145
00:10:28,930 --> 00:10:35,680
‫Şimdi, ilk sorun fare imlecini tankın merkezine yaklaştırdığımda ve sonra içinden geçtiğimde meydana

146
00:10:35,680 --> 00:10:36,890
‫geliyor.

147
00:10:36,910 --> 00:10:42,670
‫Bir noktada bu rotasyonun çok hızlı bir şekilde kırıldığını göreceksiniz.

148
00:10:42,670 --> 00:10:48,250
‫Ve eğer fareyi gelişigüzel bir şekilde hareket ettirirsek, bu pek de iyi görünmez.

149
00:10:48,250 --> 00:10:49,480
‫Kopuyor.

150
00:10:49,480 --> 00:10:50,890
‫Düzgün hareket edemiyoruz.

151
00:10:50,890 --> 00:10:52,270
‫Yani bu bir sorun.

152
00:10:52,300 --> 00:10:59,890
‫Şimdi, diğer sorun ise, eğer tıklarsam ve yuvarlanırsam ve kenara çıkarsam, fare imlecimi yukarı hareket ettirdiğimde

153
00:10:59,890 --> 00:11:03,750
‫taretimin diğer yöne doğru kaydığını göreceğim.

154
00:11:03,760 --> 00:11:05,730
‫Peki orada neler oluyor?

155
00:11:05,740 --> 00:11:06,910
‫Öğrenelim bakalım.

156
00:11:06,910 --> 00:11:10,240
‫VS Code'a geri döneceğiz ve hata ayıklama alanımı geri almak istiyorum.

157
00:11:10,240 --> 00:11:16,240
‫Tank'a geri döndüğümde, tareti döndürmeden hemen önce tik fonksiyonuna gideceğim ve bir

158
00:11:16,240 --> 00:11:19,240
‫kez daha hata ayıklama küresi çiz diyeceğim.

159
00:11:19,450 --> 00:11:26,380
‫Şimdi dünya için get world'e geçiyorum merkez için hit result dot impact point'e geçiyorum

160
00:11:26,380 --> 00:11:35,350
‫yarıçap için 25 dot kullanacağım F segmentleri 12 olabilir, renk F rengi kırmızı olabilir kalıcı çizgiler false olabilir

161
00:11:35,350 --> 00:11:38,440
‫ve ömür negatif bir olabilir.

162
00:11:38,440 --> 00:11:40,480
‫Yani daha önce yaptığımızın aynısı.

163
00:11:40,690 --> 00:11:42,280
‫Bu yüzden bu bildirimi saklayacağım.

164
00:11:42,280 --> 00:11:48,700
‫Başlık dosyasını oraya geri eklemiyorum ve bunun nedeni hata ayıklama yardımcılarının aslında varsayılan olarak dahil edilmiş olması,

165
00:11:48,700 --> 00:11:50,830
‫yani teknik olarak buna ihtiyacımız yok.

166
00:11:50,830 --> 00:11:56,740
‫Editöre geri dönüp canlı bir kodlama başlangıcı yapacağım ve oynat tuşuna basacağım.

167
00:11:56,740 --> 00:11:58,600
‫Şimdi hata ayıklama alanım var.

168
00:11:58,600 --> 00:12:05,320
‫Şimdi dünyanın kenarına gidelim ve fare imlecini uçuruma düştüğü yere kadar hareket

169
00:12:05,320 --> 00:12:07,240
‫ettireceğim.

170
00:12:07,240 --> 00:12:10,330
‫İşte bu noktada sorun yaşıyoruz.

171
00:12:10,330 --> 00:12:15,940
‫Gördüğünüz gibi, imlecimiz yukarı hareket ettiğinde imlecin altında bir isabet sonucumuz yok çünkü

172
00:12:15,940 --> 00:12:18,730
‫orada isabet sonucu alabileceğimiz bir şey yok.

173
00:12:18,730 --> 00:12:22,120
‫Bu nedenle, etki noktamız tanımlanmamıştır.

174
00:12:22,120 --> 00:12:25,570
‫Yani ihtiyacımız olan şey, bu çizgi izinin çarpacağı bir şey.

175
00:12:25,600 --> 00:12:28,810
‫Şimdi, Unreal Engine'in kullanabileceğimiz birçok aracı var.

176
00:12:28,810 --> 00:12:35,170
‫Yapacağım şey, buradaki açılır menüye tıklamak ve yer aktörümün panelini açmak ve hacimler yazan

177
00:12:35,170 --> 00:12:38,380
‫bu simgeyi seçmek ve bir engelleme hacmi almak.

178
00:12:38,380 --> 00:12:39,820
‫İşte engelleme hacmi.

179
00:12:39,820 --> 00:12:41,710
‫Birini içeri sürükleyeceğim.

180
00:12:41,740 --> 00:12:44,020
‫Şimdi bu engelleme hacmine sahibim.

181
00:12:44,110 --> 00:12:48,190
‫Şimdi varsayılan olarak, engelleme birimlerinin görünmez olması gerekiyor.

182
00:12:48,190 --> 00:12:54,130
‫Bunun ayrıntılar paneline gidip çarpışma kısmına inersem, Çarpışma Ön Ayarlarının Görünmez

183
00:12:54,130 --> 00:13:00,940
‫Duvar olduğunu görüyorum, bu da neredeyse her şeyi engellemesi gerektiğini gösteriyor.

184
00:13:00,940 --> 00:13:06,610
‫Engellemediği tek şey görünürlük kanalı ve çizgi izlememiz görünürlük

185
00:13:06,610 --> 00:13:08,680
‫kanalına karşı izliyor.

186
00:13:08,680 --> 00:13:13,630
‫Dünyamızda görünürlük kanalını engelleyen herhangi bir şey, hat izimiz tarafından vurulacaktır.

187
00:13:13,630 --> 00:13:16,540
‫Ama bu özel cilt öyle olmayacak.

188
00:13:16,540 --> 00:13:17,860
‫Görünmez olması gerekiyordu.

189
00:13:17,860 --> 00:13:22,690
‫Çarpışma ön ayarlarına gidebilir, açılır menüyü açabilir ve özel seçeneğini belirleyebiliriz.

190
00:13:22,720 --> 00:13:28,300
‫Bu, çarpışma tepkisini görünürlük kanalına ayarlayabilmem için bunu değiştirmemize olanak tanıyacak.

191
00:13:28,300 --> 00:13:29,170
‫Bu bir blok.

192
00:13:29,170 --> 00:13:34,960
‫Şimdi görünmez bir birimim var, ancak görünürlük kanalını engelleyecek şekilde ayarlandı, bu da bizimki

193
00:13:34,960 --> 00:13:40,180
‫gibi görünürlük kanalına karşı izlenen çizgi izlerinin ona çarpacağı anlamına geliyor.

194
00:13:40,180 --> 00:13:45,580
‫Yani yapabileceğim şey, bu engelleme hacmini alıp ölçeklendirmek.

195
00:13:45,580 --> 00:13:47,800
‫Duvarın hemen ötesine koyacağım.

196
00:13:47,800 --> 00:13:53,440
‫Aslında, tam buraya duvarın sınırlarına yerleştirebilirim ve duvarla üst üste gelecek

197
00:13:53,440 --> 00:13:55,900
‫şekilde biraz aşağı indireceğim.

198
00:13:55,900 --> 00:14:03,550
‫Böylece burada görünmez bir bariyerimiz olur ve ben de devam edip Y yönünde ölçeklendireceğim.

199
00:14:03,550 --> 00:14:09,880
‫Bu yüzden bunu güzelce büyüteceğim ve burada ortaya yerleştireceğim ve biraz dolgu yapacağım.

200
00:14:09,880 --> 00:14:14,050
‫Ayrıca Z yönünde de ölçeklendireceğim.

201
00:14:14,050 --> 00:14:18,460
‫Şimdi güzel ve büyük ve hat izimiz ona çarpmalı.

202
00:14:18,460 --> 00:14:20,080
‫Öyleyse bu teoriyi test edelim.

203
00:14:20,110 --> 00:14:23,170
‫Görüntü alanına tıklayalım ve duvara çıkalım.

204
00:14:23,170 --> 00:14:30,250
‫Ve eminim ki, çizgi izlememle o engelleme hacmine ulaşıyorum ve taretimin tanımlanmamış bir

205
00:14:30,250 --> 00:14:34,240
‫konuma bakmak için takıldığı sorunu yaşamıyorum.

206
00:14:34,240 --> 00:14:40,810
‫Muhtemelen dünyanın orijinine doğru bakıyor çünkü çarpma noktası vektörünün tamamı sıfır.

207
00:14:40,810 --> 00:14:43,660
‫Şimdi bu duvara çıkarsam, aynı sorunu yaşıyorum.

208
00:14:43,660 --> 00:14:46,270
‫Bu yüzden bu engelleme hacimlerine ihtiyacımız var.

209
00:14:46,600 --> 00:14:48,950
‫Katımızın çevresine.

210
00:14:48,970 --> 00:14:50,590
‫Şimdi, bu oldukça kolay olabilir.

211
00:14:50,590 --> 00:14:54,820
‫Tek yapmam gereken bu engelleme birimini çoğaltmak.

212
00:14:54,820 --> 00:14:59,290
‫Şimdi perspektif görünümden üst ortografik görünüme geçebilirim.

213
00:14:59,290 --> 00:15:06,070
‫Bu yüzden üst kısmı seçeceğim ve fare tekerleğimle dışarı kaydıracağım ve alt tuşuna basılı tutarak bu duvarı çoğaltacağım

214
00:15:06,070 --> 00:15:11,620
‫ve bir tanesini buraya yerleştireceğim ve döndürme moduna geçmek için E tuşuna basabilirim.

215
00:15:11,620 --> 00:15:14,740
‫Bu yüzden alt tuşunu basılı tutup 90 derece döndüreceğim.

216
00:15:14,740 --> 00:15:21,010
‫Bu bana bir kopya verecek ve sonra çift u'ya basacağım ve çeviri modumu çalıştıracağım ve buraya

217
00:15:21,010 --> 00:15:26,920
‫bu tarafa taşıyacağım ve Alt'a basılı tutup bir kopyayı bu tarafa sürükleyeceğim.

218
00:15:26,920 --> 00:15:28,720
‫Şimdi dört duvarımız var.

219
00:15:28,720 --> 00:15:34,990
‫Şimdi üstten görünümden perspektife geri dönüp oynat düğmesine basabilirim ve şimdi bu duvarlardan herhangi

220
00:15:34,990 --> 00:15:40,240
‫birine gidebilirim ve hangi duvarı kapladığım önemli değil, bu yüzden harika görünüyor.

221
00:15:40,240 --> 00:15:42,340
‫Böylece sorunlarımızdan biri halledilmiş oldu.

222
00:15:42,340 --> 00:15:43,720
‫Peki ya diğeri?

223
00:15:43,720 --> 00:15:49,360
‫Fareyi tankımızın yakınında hareket ettirirsek, yine de bu düzensiz davranışa sahip oluruz.

224
00:15:49,360 --> 00:15:51,880
‫Bu yüzden bununla da ilgilenmek istiyorum.

225
00:15:51,880 --> 00:15:56,770
‫Şimdi, bunu halletmenin yolu bu rotasyonu enterpolasyonla yapmaktır.

226
00:15:56,770 --> 00:16:02,650
‫Dolayısıyla, bu rotasyon değerini doğrudan ayarlamak yerine, bu rotasyonu sağladığımız

227
00:16:02,650 --> 00:16:08,740
‫hedefe doğru düzgün bir şekilde taşıyacak bir enterpolasyon fonksiyonu kullanabiliriz.

228
00:16:08,740 --> 00:16:10,270
‫Bakalım nasıl olacak.

229
00:16:10,270 --> 00:16:15,970
‫Şimdi, bu enterpolasyonun tareti döndürme fonksiyonumuzda olmasını istiyorum, böylece tareti döndürmek

230
00:16:15,970 --> 00:16:22,750
‫için temel piyona geri dönebiliriz ve taretin rotasyona bakması için dünya rotasyonumuzu ayarlamak yerine, onu bir enterpolasyon

231
00:16:22,750 --> 00:16:28,240
‫fonksiyonu tarafından döndürülen değere eşit olarak ayarlayabiliriz.

232
00:16:28,240 --> 00:16:34,720
‫Bu yüzden rotasyonu sileceğim, bakacağım ve bunun yerine F matematik kütüphanesinde

233
00:16:34,720 --> 00:16:38,590
‫R inter two adında bir fonksiyon çağıracağız.

234
00:16:39,100 --> 00:16:44,530
‫Şimdi in two, döndürücüler için enterpolasyonu işlemek üzere tasarlanmıştır.

235
00:16:44,530 --> 00:16:49,720
‫Şimdi ilk giriş parametresi akım adı verilen bir const F döndürücü referansıdır.

236
00:16:49,720 --> 00:16:53,650
‫Bu, değiştirmeye çalıştığımız şeyin mevcut değeridir.

237
00:16:53,650 --> 00:16:59,560
‫Değiştirmeye çalıştığımız şey taretlerimizin dönüşüdür ve bunu taret ağımızdan elde edebiliriz.

238
00:16:59,560 --> 00:17:05,920
‫Bu yüzden taret ağı diyeceğiz ve kullanmak istediğimiz fonksiyon bileşen rotasyonunu almaktır.

239
00:17:05,920 --> 00:17:10,420
‫Yani bileşen konumunu almak gibi bir şey, sadece rotasyonu alıyor.

240
00:17:10,420 --> 00:17:14,200
‫Şimdi bir sonraki girdi Target adında bir F döndürücüdür.

241
00:17:14,200 --> 00:17:15,310
‫İşte değer bu.

242
00:17:15,310 --> 00:17:21,430
‫Bu taret ağı dönüşünün sorunsuz bir şekilde yaklaşmak için yorumlanmasını istiyoruz.

243
00:17:21,430 --> 00:17:23,890
‫Rotasyona bakışımız bu şekilde olacak.

244
00:17:23,890 --> 00:17:26,620
‫Bu yüzden rotasyona bakın diyeceğim.

245
00:17:26,620 --> 00:17:28,630
‫Bir sonraki girdi Delta zamanıdır.

246
00:17:28,630 --> 00:17:30,640
‫Bu yüzden Delta zamanının önemini biliyoruz.

247
00:17:30,640 --> 00:17:37,030
‫Bir şeyleri hareket ettiriyor veya döndürüyorsak, bu hareketin kare hızından bağımsız olmasını isteriz.

248
00:17:37,030 --> 00:17:39,700
‫Bunun için Delta zamanı alabiliriz.

249
00:17:39,700 --> 00:17:46,210
‫Basitçe oynanış istatistiklerini ekleyebilirim ve eğer iyi bir hafızanız varsa, eklemenin kismet slash oynanış

250
00:17:46,210 --> 00:17:49,150
‫istatistikleri olduğunu hatırlayacaksınız.

251
00:17:49,150 --> 00:17:57,700
‫Bu yüzden statik fonksiyona erişebilmek, dünya delta saniyelerini alabilmek ve bunun bir dünya bağlamı nesnesi gerektirdiğini

252
00:17:57,700 --> 00:18:01,150
‫hatırlamak için oyun statiğini buraya alacağım.

253
00:18:01,150 --> 00:18:04,030
‫Bu yüzden bunu oraya aktaracağım.

254
00:18:04,030 --> 00:18:06,340
‫Ve son olarak, dahili bir hıza ihtiyacımız var.

255
00:18:06,340 --> 00:18:12,280
‫İç hız değeri ne kadar yüksek olursa, hedefe doğru o kadar hızlı enterpolasyon yaparız.

256
00:18:12,280 --> 00:18:18,550
‫Yani bunu diyelim ki beş F değerine ayarlarsam, oldukça yavaş bir şekilde enterpolasyon yaparız.

257
00:18:18,580 --> 00:18:20,470
‫Bakalım şimdi nasıl görünecek.

258
00:18:20,470 --> 00:18:25,030
‫Tüm bunlar tek bir satırda ve ekrandan akıp gidiyor.

259
00:18:25,030 --> 00:18:32,440
‫Bu yüzden, dünya rotasyonunu ayarlamak için girdiyi aşağıdaki gibi kendi satırına yerleştireceğim.

260
00:18:32,440 --> 00:18:34,060
‫İşte böyle.

261
00:18:34,060 --> 00:18:39,820
‫Ve sonra bu dört girdi parametresine sahip olan yorumlayıcımız da ekrandan çalışır.

262
00:18:39,820 --> 00:18:43,270
‫Bu yüzden her birini kendi satırlarına yerleştireceğim.

263
00:18:43,270 --> 00:18:49,420
‫Bu şekilde, ekranı bu şekilde kaydırmak zorunda kalmadan tüm girdileri görebiliriz.

264
00:18:49,420 --> 00:18:49,840
‫Tamam.

265
00:18:49,840 --> 00:18:54,220
‫Devam edip bunu kaydedeceğim ve canlı kodlamayı başlatacağım.

266
00:18:54,220 --> 00:19:01,480
‫Ve şimdi oynat düğmesine basıp fareyi hareket ettirdiğimde, bu dönüşün gerçekleşmesinin biraz zaman aldığına dikkat edin.

267
00:19:01,480 --> 00:19:06,430
‫Bunun nedeni, hedef rotasyona doğru düzgün bir şekilde enterpolasyon yapıyor olmamızdır.

268
00:19:06,430 --> 00:19:07,780
‫Şimdi, bu harika.

269
00:19:07,780 --> 00:19:09,340
‫Ben de tam bunu istiyordum.

270
00:19:09,340 --> 00:19:14,950
‫Faremi nasıl hareket ettirirsem ettireyim, asla o hızlı, sarsıntılı, düzensiz hareketi elde edemeyeceğim.

271
00:19:15,040 --> 00:19:20,170
‫Şimdi, beş çok yavaş bir internet hızı, ama bunu değiştirebiliriz.

272
00:19:20,170 --> 00:19:21,820
‫Biraz daha hızlandırabiliriz.

273
00:19:21,820 --> 00:19:28,420
‫Bunu 25'e ayarlayacağım, nasıl göründüğüne bakacağım ve devam edip oyununuz için istediğiniz değere karar vermenize

274
00:19:28,420 --> 00:19:30,040
‫izin vereceğim.

275
00:19:30,040 --> 00:19:34,450
‫Bir kez daha canlı kodlamayı başlatıyor ve oynat tuşuna basıyorum.

276
00:19:34,510 --> 00:19:39,010
‫Şimdi oldukça hızlı bir enterpolasyona sahibim, ancak yakalamıyor.

277
00:19:39,010 --> 00:19:42,910
‫Yine de hızlı, ama anlık bir çırpıda değil.

278
00:19:42,910 --> 00:19:46,360
‫Yani böyle bir şey yapmadığımız sürece bunu elde edemeyiz.

279
00:19:46,540 --> 00:19:47,860
‫Çılgınca bir davranış.

280
00:19:47,860 --> 00:19:53,500
‫Ve elbette, daha yavaş bir rotasyon istiyorsanız, şimdi nasıl yapacağınızı biliyorsunuz ve hata ayıklama küresi çekmeyi

281
00:19:53,500 --> 00:19:56,220
‫bitirdik, bu yüzden devam edip bunu kaldıracağım.

282
00:19:56,230 --> 00:19:56,650
‫Tamam.

283
00:19:56,650 --> 00:20:02,920
‫Özetle, taret rotasyonunu ayarladık ve dünyadaki bir noktaya karşılık gelen bir F vektörü

284
00:20:02,920 --> 00:20:05,800
‫olan Hedefe bakışı iletiyoruz.

285
00:20:05,800 --> 00:20:08,080
‫Şu anda sadece trace hit sonucunu kullanıyoruz.

286
00:20:08,110 --> 00:20:13,090
‫Şimdi bu fonksiyonu temel pong sınıfına koyduk ve korumalı hale getirdik, bu da tank sınıfındaki

287
00:20:13,090 --> 00:20:15,880
‫fonksiyonu miras alabileceğimiz anlamına geliyor.

288
00:20:15,880 --> 00:20:21,190
‫Ve base -- temelinde bir kule sınıfı oluşturmaya hazır olduğumuzda, o kule sınıfı bu rotate turret

289
00:20:21,190 --> 00:20:24,610
‫işlevini miras alacak ve biz de onu yeniden kullanabileceğiz.

290
00:20:24,610 --> 00:20:26,050
‫Tek yapmamız gereken geçmek.

291
00:20:26,050 --> 00:20:32,380
‫Target'a yeni bir bakışta, gelecek derslerde temelden türetilmiş bir kule sınıfı oluşturmaya çalışacağız.

292
00:20:32,380 --> 00:20:33,250
‫Yakında görüşürüz.

