﻿1
00:00:03,980 --> 00:00:05,900
‫Merhaba ve tekrar hoş geldiniz.

2
00:00:05,930 --> 00:00:10,610
‫Şimdi hareket edebilen ve hatta taretini döndürebilen bir tank yarattık.

3
00:00:10,610 --> 00:00:16,190
‫Ve şimdi tankın temel pod sınıfından miras aldığı bazı işlevleri devralabilecek

4
00:00:16,190 --> 00:00:18,830
‫bir kule sınıfı oluşturmaya hazırız.

5
00:00:19,100 --> 00:00:24,560
‫Şimdi, bir kule sınıfı oluşturduktan sonra, taretini de döndürebilmek için tick fonksiyonunu

6
00:00:24,560 --> 00:00:26,000
‫geçersiz kılacağız.

7
00:00:26,030 --> 00:00:32,080
‫Buradaki amacımız, taretlerin her zaman tanka bakacak şekilde dönmesini sağlamaktır.

8
00:00:32,090 --> 00:00:37,430
‫Bu şekilde, mermileri ateşlemeye başladıklarında, tank hızla yoldan çekilmediği sürece bazen

9
00:00:37,430 --> 00:00:39,020
‫tankı vuracaklardır.

10
00:00:39,630 --> 00:00:43,740
‫Ayrıca tankı nasıl ele geçirebileceğimizi de bulacağız.

11
00:00:43,770 --> 00:00:49,380
‫Bu şekilde tankı hedef alabilir ve kuleleri tanka doğru döndürebiliriz.

12
00:00:49,410 --> 00:00:52,350
‫Biraz mermi savaşına hazırlanıyoruz.

13
00:00:52,650 --> 00:00:58,200
‫Editördeyim ve temel tank ve tank sınıflarının bulunduğu tune tanks klasörümüze

14
00:00:58,200 --> 00:00:59,910
‫gireceğim.

15
00:01:00,270 --> 00:01:04,650
‫Şimdi, temel -- sınıfına dayalı bir kule sınıfı oluşturmak istiyorum.

16
00:01:04,770 --> 00:01:07,850
‫Şimdi, bunu tank sınıfıyla yapma şeklimiz doğruydu.

17
00:01:07,860 --> 00:01:14,430
‫Temel üzerine tıklandı -- ve temelden türetilen C++ sınıfı oluştur seçildi Alternatif bir

18
00:01:14,430 --> 00:01:18,210
‫yol, araçlara gitmek ve yeni C++ sınıfı seçmektir.

19
00:01:18,540 --> 00:01:24,630
‫Ve buradan tüm sınıflar yazan sekmeye tıklayabilir ve base -- için arama yapabiliriz.

20
00:01:24,750 --> 00:01:27,270
‫Ve burada temel -- sınıfımızı görüyoruz.

21
00:01:27,480 --> 00:01:33,050
‫Bunu seçip ileri'ye tıklarsam, şimdi base -- temelinde yeni bir sınıf oluşturacağım.

22
00:01:33,060 --> 00:01:38,910
‫Bunu diğer tüm C++ sınıflarımızla aynı yolda bırakacağım ve bu kuleyi çağıracağım.

23
00:01:39,210 --> 00:01:41,070
‫O halde Sınıf Oluştur'a tıklayalım.

24
00:01:41,610 --> 00:01:44,720
‫İşte yeni kule yaşım ve Kule Nokta'm.

25
00:01:44,790 --> 00:01:51,360
‫CP Şimdi ihtiyacımız olan ilk şey tik fonksiyonu çünkü kule taretini -- ile yüzleşecek şekilde

26
00:01:51,360 --> 00:01:53,520
‫döndürmek isteyecek.

27
00:01:53,730 --> 00:01:56,640
‫Bu yüzden burada tick fonksiyonunu geçersiz kılacağız.

28
00:01:56,640 --> 00:02:03,930
‫Bu yüzden yeni bir public bölüm oluşturacağım ve Delta Time adında bir float alan virtual void

29
00:02:03,930 --> 00:02:07,560
‫tick yazacağız ve bu bir override olacak.

30
00:02:07,560 --> 00:02:14,100
‫Gelecek videolarda virtual ve override hakkında daha fazla ayrıntıya gireceğiz, ancak esasen miras alınan

31
00:02:14,100 --> 00:02:18,600
‫tick işlevini alıyoruz ve bunun için yeni bir uygulama oluşturuyoruz.

32
00:02:18,600 --> 00:02:23,520
‫Şimdi tick fonksiyonunu alalım ve burada Tower CP'de uygulayalım.

33
00:02:23,550 --> 00:02:29,370
‫Şimdi tick fonksiyon adının önüne bir kule ve çift iki nokta üst üste koymamız gerekiyor.

34
00:02:29,370 --> 00:02:34,950
‫Ve her zaman olduğu gibi, süper kene aramak iyi bir fikirdir ve Delta zamanında geçmemiz gerekir.

35
00:02:34,950 --> 00:02:40,830
‫Şimdi burada yapmak istediğim şey, tank kulesini döndürerek kulenin tankı tehdit etmesini ve mermileri ateşlemeye

36
00:02:40,830 --> 00:02:42,390
‫hazır olmasını sağlamak.

37
00:02:42,390 --> 00:02:45,870
‫Ancak bunu yalnızca tank menzil içindeyse yapmak istiyorum.

38
00:02:46,170 --> 00:02:52,620
‫Şimdi, tankın menzilde olup olmadığını bilmek için, taret ile tank arasındaki mesafeyi bilmemiz

39
00:02:52,620 --> 00:02:53,750
‫gerekir.

40
00:02:53,760 --> 00:02:57,510
‫Şimdi, işte dünyanın kökenini temsil eden küçük bir alet.

41
00:02:57,510 --> 00:03:01,470
‫Başka bir deyişle, uzayda X, Y ve Z'nin sıfır olduğu nokta.

42
00:03:01,470 --> 00:03:08,970
‫Şimdi, bir aktörün konumundan bahsettiğimizde, başlangıç noktasından o konuma giden vektörden bahsediyoruz.

43
00:03:08,970 --> 00:03:15,060
‫Ve get actor location kullanarak bu konum vektörünü her zaman alabiliriz, böylece kulelerden birinin konumunu

44
00:03:15,060 --> 00:03:17,430
‫ve tankın konumunu alabiliriz.

45
00:03:17,430 --> 00:03:21,930
‫Ve eğer bu iki konumu biliyorsak, aralarındaki mesafeyi hesaplayabiliriz.

46
00:03:21,930 --> 00:03:28,470
‫Şimdi, bunu vektör matematiği ile yapabiliriz, ancak F vektör sınıfının dist adında bir işlevi vardır

47
00:03:28,470 --> 00:03:33,810
‫ve bu işlev konum vektörlerini alır ve döndürdüğü şey aralarındaki mesafedir.

48
00:03:33,810 --> 00:03:40,440
‫Burada, kule CP dosyasında, tik fonksiyonunda, ne yapmamız gerektiğini bilmemiz için birkaç

49
00:03:40,440 --> 00:03:41,940
‫not yazacağım.

50
00:03:41,940 --> 00:03:52,890
‫İlk olarak, tanka olan mesafeyi bulmamız, ardından tankın menzilde olup olmadığını kontrol etmemiz ve menzildeyse

51
00:03:52,890 --> 00:03:58,170
‫tareti tanka doğru döndürmemiz gerekir.

52
00:03:59,070 --> 00:04:00,960
‫Yani burada yapmamız gereken bazı şeyler var.

53
00:04:01,140 --> 00:04:05,820
‫Şimdi, tanka olan mesafeyi bulmak için tankı tutmamız gerekiyor.

54
00:04:05,850 --> 00:04:08,640
‫Şimdi, bunu yapmak için iyi bir yer Begin Play'dir.

55
00:04:08,640 --> 00:04:13,350
‫Bu yüzden tik fonksiyonuna ek olarak, devam edelim ve Begin Play'i geçersiz kılalım.

56
00:04:13,380 --> 00:04:17,580
‫Tank H'de oyuna başlamanın korumalı bir bölümde olduğuna dikkat edin.

57
00:04:17,580 --> 00:04:21,210
‫Onu kulede de korumaya devam edeceğiz.

58
00:04:21,210 --> 00:04:28,380
‫Bu yüzden korumalı bölümü kamuya açık bölümün hemen altına yerleştireceğiz ve oynatmaya başlama işaretinin hemen altında uygulayacağız.

59
00:04:28,380 --> 00:04:35,580
‫Şimdi Tower Dot'a gidelim, CP, implement, begin play fonksiyon adını tam olarak nitelendirelim ve muhtemelen tahmin

60
00:04:35,580 --> 00:04:38,670
‫ettiğiniz gibi Super Begin Play diyoruz.

61
00:04:38,790 --> 00:04:44,310
‫Şimdi tankı almak ve bir değişkende saklamak için tank tipinde bir değişkene ihtiyacımız var.

62
00:04:44,310 --> 00:04:49,200
‫Bu yüzden bunu Towers H'de özel bir bölüme yerleştireceğiz.

63
00:04:49,200 --> 00:04:55,290
‫Şimdi bu bir A tankı olacak, bu bir işaretçi ve bu tankı basitçe çağırabiliriz.

64
00:04:55,290 --> 00:05:01,980
‫Ve Tank H'yi buraya dahil etmek zorunda kalmamak için, bunun ne kadar önemli olabileceğini gördüğümüzü beyan

65
00:05:01,980 --> 00:05:03,000
‫edebiliriz.

66
00:05:03,360 --> 00:05:09,540
‫Şimdi bu tank işaretçisine sahibiz ve tanka nasıl erişeceğimizi bulabilirsek, onu buradaki tank işaretçimizde

67
00:05:09,540 --> 00:05:11,970
‫saklayabilir ve oynamaya başlayabiliriz.

68
00:05:12,000 --> 00:05:18,510
‫Yapacağım ilk şey Tank H'yi dahil etmek olacak, böylece türü gerçekten kullanabileceğiz.

69
00:05:18,510 --> 00:05:20,580
‫Peki tanka nasıl erişeceğiz?

70
00:05:20,580 --> 00:05:26,220
‫İşte oyuncu piyonunu al adlı kullanışlı bir işlev için unreal engine belgeleri.

71
00:05:26,310 --> 00:05:29,100
‫Bir oyun statiği içinde var olur.

72
00:05:29,160 --> 00:05:34,680
‫Bunu açtığıma göre, devam edip gameplay statics için include'i kopyalayacağım ve sözdizimine

73
00:05:34,680 --> 00:05:35,910
‫bir göz atacağım.

74
00:05:35,910 --> 00:05:39,060
‫Bir dünya bağlamı nesnesi olmak üzere iki girdisi vardır.

75
00:05:39,470 --> 00:05:42,950
‫Bunu nasıl halledeceğimizi ve bir oyuncu endeksini zaten biliyoruz.

76
00:05:42,950 --> 00:05:49,310
‫Bizimki gibi tek oyunculu oyunlarda gördüğümüz gibi, oyuncu indeksi her zaman sıfırıncı oyuncu olacaktır ve bu

77
00:05:49,310 --> 00:05:53,660
‫da sıfırıncı oyuncuya karşılık gelen piyona erişmemizi sağlayacaktır.

78
00:05:54,050 --> 00:05:57,650
‫Şimdi bu fonksiyonu Tower Dot CP'de çağıralım.

79
00:05:57,680 --> 00:06:04,850
‫Oynanış istatistikleri için include'i yapıştıracağım ve begin play'de tank'ı dünya

80
00:06:04,850 --> 00:06:12,290
‫bağlamı nesnesi için oynanış istatistikleri get player'a eşit olarak ayarlayacağım.

81
00:06:12,290 --> 00:06:17,910
‫Bunu girebilirim ve oyuncu indeksi için sıfır girebiliriz.

82
00:06:17,930 --> 00:06:19,970
‫Şimdi kırmızı dalgalı çizgiye bak.

83
00:06:19,970 --> 00:06:26,120
‫A piyonu türündeki bir değerin A tankı türündeki bir varlığa atanamayacağını söylüyor.

84
00:06:26,150 --> 00:06:33,290
‫Bu, denetleyiciyi çağırmaya, almaya ve sonucu bir A oyuncu denetleyicisinde depolamaya çalışırken karşılaştığımız

85
00:06:33,320 --> 00:06:35,810
‫sorunun aynısıdır.

86
00:06:35,870 --> 00:06:42,200
‫Bir tank bir piyonun çocuğudur, bu nedenle bir üst tipi bir alt işaretçide saklayamayız.

87
00:06:42,200 --> 00:06:43,370
‫Yapmak zorundayız.

88
00:06:44,150 --> 00:06:46,060
‫Tahmin ettiniz, oyuncu seçmeliyiz.

89
00:06:46,070 --> 00:06:51,830
‫Bu yüzden buradan dönen değeri alacağız ve bir döküm işlevi çağrısının içine koyacağız.

90
00:06:51,830 --> 00:06:56,000
‫Yani döküm diyeceğiz ve bir tanka döküm yapacağız.

91
00:06:56,000 --> 00:07:02,300
‫Oyunculara ileteceğimiz şey de oyuncu havuzunu almak için yapacağımız bu çağrı olacak.

92
00:07:02,300 --> 00:07:04,850
‫O halde bunu parantez içine alalım.

93
00:07:04,850 --> 00:07:09,260
‫Alçıdan sonra da tanka girebileceğiz.

94
00:07:09,380 --> 00:07:16,310
‫Artık tanka erişimimiz olduğuna göre, tanka olan mesafeyi bulabiliriz ve mesafe bir şamandıradır.

95
00:07:16,310 --> 00:07:20,240
‫Böylece mesafe adında yerel bir float değişken oluşturabiliriz.

96
00:07:20,600 --> 00:07:27,380
‫Ve bunu eşitleyeceğimiz şey, F vektör statik fonksiyonu dist'i çağırmanın sonucudur.

97
00:07:27,410 --> 00:07:31,700
‫Şimdi dist, F vektör tipinde iki girdi parametresi alır.

98
00:07:31,880 --> 00:07:34,850
‫Şimdi uzaydaki iki nokta arasındaki mesafeyi istiyoruz.

99
00:07:34,850 --> 00:07:37,010
‫Birincisi kulenin yeri.

100
00:07:37,010 --> 00:07:43,190
‫Kule sınıfındayız, bu yüzden get actor location'ı çağırabiliriz ve bu bize kulenin konumunu verir.

101
00:07:43,190 --> 00:07:44,660
‫Peki ya tank?

102
00:07:44,660 --> 00:07:50,870
‫Tankı arayabilir, aktörün yerini öğrenebilir ve mesafeyi öğrenebiliriz.

103
00:07:50,870 --> 00:07:56,450
‫Şimdi tek sorun, önce null olmadığından emin olmak için kontrol etmeden tank işaretçisini kullanıyor

104
00:07:56,450 --> 00:07:57,110
‫olmamız.

105
00:07:57,290 --> 00:08:06,860
‫Bu yüzden önce if tank demeliyiz ve sonra bu fonksiyon çağrısını alıp if deyiminin içine sürükleyebiliriz.

106
00:08:06,860 --> 00:08:13,190
‫Yani tank geçerliyse, get actor location ile konumuna erişebiliriz.

107
00:08:13,190 --> 00:08:14,030
‫Mükemmel.

108
00:08:14,030 --> 00:08:19,130
‫Bu if deyiminde çalıştığımız için, bu diğer yorumları bunun içine taşıyacağım çünkü tank

109
00:08:19,130 --> 00:08:24,410
‫geçerli değilse, tankın aralıkta olup olmadığını kontrol edemeyeceğimizi biliyoruz.

110
00:08:24,590 --> 00:08:28,790
‫Bu yüzden tareti tanka doğru döndürmeniz için size meydan okumak istiyorum.

111
00:08:28,790 --> 00:08:33,020
‫Şimdi, bunu yalnızca tank menzil içindeyse yapmak istiyoruz, mesafemiz var.

112
00:08:33,020 --> 00:08:35,240
‫Şimdi bir ateş aralığı değişkenine ihtiyacımız var.

113
00:08:35,240 --> 00:08:40,490
‫Bu nedenle, kule sınıfında yangın aralığı adında bir float oluşturun ve bunu özelliğinizle gösterin.

114
00:08:40,490 --> 00:08:42,980
‫Bunu editörden düzenleyebilmek istiyoruz.

115
00:08:43,010 --> 00:08:45,890
‫Şimdi tankın menzil içinde olup olmadığını kontrol edeceksiniz.

116
00:08:45,890 --> 00:08:50,630
‫Tareti döndür denirse ve tareti döndürmek için hedefe bakmak gerekir.

117
00:08:50,630 --> 00:08:53,180
‫Tankların bulunduğu yerden geçeceksin.

118
00:08:53,180 --> 00:08:56,660
‫Bu yüzden videoyu durdurun ve bu davranışı şimdi uygulayın.

119
00:09:00,030 --> 00:09:00,420
‫Tamam.

120
00:09:00,420 --> 00:09:02,370
‫Bu yüzden bir yangın aralığı değişkenine ihtiyacımız var.

121
00:09:02,370 --> 00:09:05,940
‫Burada, H Kulesi'nde özel bir bölümümüz var.

122
00:09:05,940 --> 00:09:07,680
‫Bir şamandıra yapacağız.

123
00:09:08,340 --> 00:09:16,650
‫Bu yangın aralığını çağıracağım ve devam edip 300 F gibi bir değerle başlatacağım.

124
00:09:16,650 --> 00:09:21,030
‫Ama bunu deneyeceğiz çünkü bu sizin mülkünüz olacak.

125
00:09:21,240 --> 00:09:22,860
‫Yani senin mülkün.

126
00:09:22,860 --> 00:09:29,910
‫Tüm tankların aynı atış menziline sahip olmasını istediğimden, bunu yapacağım ve sadece varsayılan olarak ayarlayacağım.

127
00:09:29,910 --> 00:09:33,270
‫Bu şekilde sadece varsayılan plan üzerinde düzenleme yapabiliriz.

128
00:09:33,300 --> 00:09:38,940
‫Şimdi eğer sizinkini herhangi bir yerde düzenle ya da sadece örneği düzenle yaptıysanız, bu tamamen sorun değil.

129
00:09:38,940 --> 00:09:42,090
‫Bu gerçekten bir tercih meselesi ve daha sonra değiştirebiliriz.

130
00:09:42,090 --> 00:09:46,710
‫Ben de buna bir kategori vereceğim ve bu kategoriye savaş diyeceğim.

131
00:09:46,740 --> 00:09:50,820
‫Tower CP'ye gidelim ve burada bir sonraki noktayı ele alalım.

132
00:09:50,820 --> 00:09:57,120
‫Tankın menzil içinde olup olmadığını kontrol edin, bu da mesafenin ateş menziline eşit veya daha az olup olmadığını kontrol

133
00:09:57,120 --> 00:09:59,160
‫etmemiz gerektiği anlamına gelir.

134
00:09:59,160 --> 00:10:04,860
‫Sadece eşit değil, eşitten daha az veya eşit var, çünkü kareden kareye, mesafe aslında bir kare

135
00:10:04,860 --> 00:10:11,970
‫ateş menzilinden daha büyük ve bir sonraki kare tamamen ateş menzilini geçerek ateş menzilinden daha az olabilir.

136
00:10:11,970 --> 00:10:15,870
‫Yani aslında hiçbir zaman tam olarak ateş menziline eşit olmayabilir.

137
00:10:15,870 --> 00:10:20,820
‫Aslında, kayan nokta değerlerinde, iki kayan noktanın tam olarak eşit olması oldukça nadirdir.

138
00:10:20,820 --> 00:10:26,640
‫Yani bu if kontrolüne sahibiz ve bunun içine girersek, bu, mesafenin ateş menzilinden daha az veya eşit olduğu

139
00:10:26,640 --> 00:10:27,630
‫anlamına gelir.

140
00:10:27,630 --> 00:10:33,120
‫Tank şimdi menzilde, bu da bu yorumun oraya taşınabileceği anlamına geliyor.

141
00:10:33,960 --> 00:10:41,190
‫Şimdi, menzil içindeyse, tareti tanka doğru döndürün; bu, tareti döndür işlevini çağıracağımız anlamına

142
00:10:41,190 --> 00:10:42,180
‫gelir.

143
00:10:42,390 --> 00:10:45,690
‫Bu, temel pod'a koyduğumuz korumalı işlevimizdir.

144
00:10:45,720 --> 00:10:51,060
‫Şimdi döndürme tareti hedefe bakar ve tankın konumuna ihtiyacımız vardır.

145
00:10:51,060 --> 00:10:55,410
‫Yani bu tank aktörün yerini alacak.

146
00:10:55,410 --> 00:11:02,010
‫Ve bununla birlikte artık sadece tank menzil içindeyse tareti döndür diyoruz.

147
00:11:02,010 --> 00:11:05,040
‫Şimdi bunu derleyelim ve nasıl çalıştığını görelim.

148
00:11:05,340 --> 00:11:12,030
‫Düzenleyiciye geri döndük ve yapmamız gereken şey planlara, piyonlara gitmek ve bir BP piyon kulesi

149
00:11:12,030 --> 00:11:15,120
‫bulmak ve tam plan düzenleyicisini açmak.

150
00:11:15,120 --> 00:11:22,170
‫Şimdi sağ üstte, ana sınıf temel piyonu görüyoruz, ancak ana sınıfımızın kule olmasını istiyoruz, bu

151
00:11:22,170 --> 00:11:27,930
‫nedenle sınıf ayarlarına, ana sınıfa gidebilir ve kuleyi arayıp seçebiliriz.

152
00:11:27,960 --> 00:11:31,980
‫Şimdi piyon taretimiz kule sınıfına dayanıyor.

153
00:11:31,980 --> 00:11:34,710
‫Şimdi oynat tuşuna bastığımızda ne olacağını görelim.

154
00:11:35,070 --> 00:11:37,200
‫Tamam, tankın yerini değiştiriyorum.

155
00:11:37,200 --> 00:11:40,560
‫Menzilde değiliz, bu yüzden kulelerden herhangi bir hareket göremiyoruz.

156
00:11:40,560 --> 00:11:44,100
‫Ama menzile girersem, şuna bak.

157
00:11:44,100 --> 00:11:47,970
‫Şimdi beni takip ediyorlar ve oldukça tehditkâr görünüyorlar.

158
00:11:48,120 --> 00:11:52,080
‫Şimdi 300 birim o kadar da uzak değil.

159
00:11:52,080 --> 00:11:55,440
‫Yapmak istediğim şey bu mesafeyi düzenlemek.

160
00:11:55,440 --> 00:12:00,840
‫Buradan BP Piyon Tareti'nde, BP Gölet Tareti'ni kendim seçeceğim.

161
00:12:00,840 --> 00:12:02,850
‫Ve işte savaş bölümü.

162
00:12:02,850 --> 00:12:06,840
‫Devam edeceğim ve bunu yaklaşık 700'e ayarlayacağım.

163
00:12:07,890 --> 00:12:13,350
‫Şimdi, oynat tuşuna basarsam, ben buraya geri dönerken onların dönmeyeceğini göreceğim.

164
00:12:13,350 --> 00:12:16,410
‫Ama menzile girer girmez bana bakmaya başlıyorlar.

165
00:12:18,180 --> 00:12:19,020
‫Mükemmel.

166
00:12:20,030 --> 00:12:23,120
‫Özetle, kule sınıfını oluşturduk.

167
00:12:23,120 --> 00:12:25,720
‫Artık tank için bir düşmanımız var.

168
00:12:25,730 --> 00:12:32,060
‫Ayrıca tik fonksiyonunda kulenin taretini tanka doğru döndürdük ve bunu sadece tank ateş menzilindeyse

169
00:12:32,060 --> 00:12:33,770
‫yapıyoruz.

170
00:12:33,770 --> 00:12:39,650
‫Ayrıca, plan içinde ayarlanabilmesi için ateş aralığı değişkenini de açığa çıkardık.

171
00:12:39,770 --> 00:12:41,600
‫Savaş için neredeyse hazırız.

172
00:12:41,630 --> 00:12:44,450
‫Gelecek videolarda bunu ayarlamaya başlayacağız.

173
00:12:44,630 --> 00:12:45,620
‫Yakında görüşürüz.

