﻿1
00:00:04,260 --> 00:00:05,890
‫Merhaba ve tekrar hoş geldiniz.

2
00:00:05,910 --> 00:00:11,130
‫Şimdi, mermi sınıfımızı zaten oluşturduk ve bu şeyleri seviye içinde ortaya çıkarmaya hazırız,

3
00:00:11,130 --> 00:00:15,660
‫böylece onları kulelere fırlatabilir ve sonunda onları yok edebiliriz.

4
00:00:15,660 --> 00:00:19,950
‫Şimdi, aktörleri ortaya çıkarmak spawn actor fonksiyonunu içerecektir.

5
00:00:19,950 --> 00:00:22,470
‫Bu videoda bunun nasıl çalıştığını öğreneceğiz.

6
00:00:22,470 --> 00:00:25,290
‫Şimdi, merminin ortaya çıkması hakkında konuşalım.

7
00:00:25,320 --> 00:00:29,130
‫Bu, C++ tarafında yapmak istediğimiz bir şey.

8
00:00:29,130 --> 00:00:34,590
‫Dünyada dinamik olarak yeni nesneler oluşturmak için C++ fonksiyonlarını çağıracağız.

9
00:00:34,590 --> 00:00:41,610
‫Şimdi C++ tarafında bir nesne üretiyoruz, ancak mermi sınıfımızın planına dayalı bir nesne üretmek

10
00:00:41,610 --> 00:00:43,110
‫istiyoruz.

11
00:00:43,110 --> 00:00:50,040
‫Bunun nedeni, ek bilgiler içeren A Projectile C++ sınıfını temel alan bir planımızın

12
00:00:50,040 --> 00:00:51,030
‫olmasıdır.

13
00:00:51,030 --> 00:00:54,270
‫Özellikle, bu ağ özelliği ayarlanmıştır.

14
00:00:54,270 --> 00:00:57,780
‫Statik ağ bileşenimiz için ağı seçtik.

15
00:00:57,780 --> 00:01:00,510
‫Yani sadece C++ sürümünü ortaya çıkaramayız.

16
00:01:00,510 --> 00:01:04,590
‫Bu ağı elde etmek için blueprint versiyonunu ortaya çıkarmamız gerekiyor.

17
00:01:04,590 --> 00:01:10,650
‫Öyleyse soru şu: C++'da bir blueprint'e dayanan bir nesneyi nasıl ortaya çıkarırız?

18
00:01:10,650 --> 00:01:15,810
‫Şimdi PT Subclass adı verilen bir şey öğreneceğiz, bu bir şablon.

19
00:01:15,810 --> 00:01:20,730
‫Birçok şablon gibi, köşeli parantezler de bir tür gerektirecektir.

20
00:01:20,730 --> 00:01:24,480
‫Bu nedenle PT alt sınıfının kullanılması bir tür parametresi gerektirir.

21
00:01:24,480 --> 00:01:29,790
‫Bu da U sınıfı adı verilen bir şeyi depolayan bir değişkene sahip olmamızı sağlar.

22
00:01:29,790 --> 00:01:36,690
‫U sınıfı bir sınıf türünü temsil eder, ancak aynı zamanda unreal engine'in yansıtma sistemiyle etkileşime girme yeteneğine de

23
00:01:36,690 --> 00:01:37,350
‫sahiptir.

24
00:01:37,350 --> 00:01:43,290
‫Yansıma derken, C++ ve blueprint tarafı arasında bilgi alışverişini kastediyorum.

25
00:01:43,320 --> 00:01:50,700
‫PT sub class of, adından da anlaşılacağı gibi, aktardığımız türe göre bir sınıfı veya seçilen bu türün bir alt

26
00:01:50,700 --> 00:01:54,870
‫sınıfını temsil eden bir değişkeni saklamamızı sağlar.

27
00:01:54,870 --> 00:02:01,560
‫Bu, bir tip seçebileceğimiz ve t alt sınıfının o tipi veya ondan türetilen herhangi bir tipi temsil eden bir u sınıfı tutabileceği

28
00:02:01,560 --> 00:02:02,880
‫anlamına gelir.

29
00:02:02,880 --> 00:02:06,360
‫Ve bu, türe dayalı planları da içerir.

30
00:02:06,360 --> 00:02:09,090
‫Şimdi bu t alt sınıfının nasıl çalıştığını görelim.

31
00:02:09,090 --> 00:02:09,380
‫Tamam.

32
00:02:09,390 --> 00:02:15,270
‫Burada base pom'a geri döndüm ve base pod'da olmamın nedeni bu merminin hem tank hem de kule

33
00:02:15,270 --> 00:02:17,880
‫sınıflarında olmasını istememiz.

34
00:02:17,880 --> 00:02:20,910
‫Bu sınıfların her ikisi de mermi üretecek.

35
00:02:20,910 --> 00:02:23,700
‫Bu yüzden burada bir t alt değişken sınıfı istiyorum.

36
00:02:23,700 --> 00:02:30,930
‫Bu yüzden t sub class of diyeceğim ve köşeli parantezlerin içine bir tür girmemiz gerekiyor.

37
00:02:30,930 --> 00:02:34,740
‫Artık açılı parantezler içinde bile şu şekilde bildirimde bulunabiliriz.

38
00:02:34,740 --> 00:02:37,440
‫Ve türü bir mermi yapacağım.

39
00:02:37,440 --> 00:02:42,690
‫Bunun nedeni, projectile sınıfını yaratmış olmamız ve türünün bir projectile olmasıdır.

40
00:02:42,690 --> 00:02:47,940
‫Bu değişkeni oluşturacağım ve ona projectile class adını vereceğim.

41
00:02:47,940 --> 00:02:54,960
‫Şimdi, bu bize bir sınıf tipini temsil eden bir C++ değişkenine sahip olmamızı sağlayacak ve tip bir mermiye,

42
00:02:54,960 --> 00:02:59,670
‫hatta buna dayalı bir blueprint sınıf tipine dayalı olabilir.

43
00:02:59,670 --> 00:03:02,100
‫Şimdi ona bir U özelliği vereceğim.

44
00:03:02,730 --> 00:03:07,620
‫Bunu düzenleyebilmek istediğim için, en azından varsayılan planda, bunu varsayılanları

45
00:03:07,620 --> 00:03:09,060
‫düzenle yapacağım.

46
00:03:09,060 --> 00:03:12,540
‫Ancak şimdi buna bir kategori verebiliriz.

47
00:03:13,530 --> 00:03:16,170
‫Bunu savaş denilen bir kategoriye koyacağım.

48
00:03:16,200 --> 00:03:18,240
‫Şimdi devam edelim ve bunu derleyelim.

49
00:03:18,270 --> 00:03:23,130
‫Tamam, editöre geri döndüm ve blueprints klasörüne ve oradan da Pons klasörüne

50
00:03:23,130 --> 00:03:24,330
‫gideceğim.

51
00:03:24,330 --> 00:03:29,580
‫BP -- tankını açacağım ve tam plan düzenleyicisini açacağım.

52
00:03:29,580 --> 00:03:32,910
‫Şimdi, ayrıntılar paneline bakarsam, çatışmayı arayabilirim.

53
00:03:32,910 --> 00:03:33,840
‫İşte burada.

54
00:03:33,840 --> 00:03:36,540
‫Ve işte mermi sınıfı değişkeni.

55
00:03:36,540 --> 00:03:40,410
‫Bu, mermi sınıfı olarak adlandırdığımız alt sınıftır.

56
00:03:40,410 --> 00:03:44,250
‫Şimdi burada ayarlayabileceğimize ve bir açılır menü kullanarak ayarlayabileceğimize dikkat edin.

57
00:03:44,250 --> 00:03:47,910
‫Açılır menüye tıklarsak üç seçeneğimiz olur.

58
00:03:47,910 --> 00:03:53,340
‫Bunu none olarak ayarlayabiliriz, ki bu varsayılan olarak ayarlandığı şeydir, bu da temelde bir null pointer olduğu anlamına gelir.

59
00:03:53,340 --> 00:03:57,960
‫Ya da mermi veya BP mermisi olarak ayarlayabiliriz.

60
00:03:57,990 --> 00:04:04,740
‫Bu alt sınıfın yapmamıza izin verdiği şey, bu mermi sınıfını mermiye dayalı belirli bir türe ayarlamaktır,

61
00:04:04,740 --> 00:04:08,880
‫çünkü değişkeni oluştururken seçtiğimiz tür budur.

62
00:04:08,880 --> 00:04:10,140
‫Şimdi mermi buraya.

63
00:04:10,140 --> 00:04:14,520
‫Bu, C++'da mermi olarak adlandırılan C++ sınıfıdır.

64
00:04:14,520 --> 00:04:22,920
‫Bu bir mermi, ancak BP mermisi C++ mermi sınıfını temel alan bir plan ve bunu seçebiliyoruz.

65
00:04:22,920 --> 00:04:27,870
‫Ve şimdi mermi sınıfı BP mermi türüne ayarlandı.

66
00:04:27,870 --> 00:04:32,610
‫Şimdi, bu bir bileşen değil ve bir BP mermi nesnesi de değil.

67
00:04:32,610 --> 00:04:33,540
‫Öyle bir şey değil.

68
00:04:33,540 --> 00:04:36,480
‫Bir türü, daha spesifik olarak bir U'yu depolar.

69
00:04:36,480 --> 00:04:37,260
‫Sınıf tipi.

70
00:04:37,260 --> 00:04:45,390
‫Ve dediğim gibi, sınıfınız yansımanın C++ ve planlar arasında çalışmasını sağlayan yerleşik işlevselliğe sahiptir.

71
00:04:45,390 --> 00:04:48,690
‫C++ ve planlar arasında bilgi akışı olabilir.

72
00:04:48,690 --> 00:04:55,710
‫Artık BP mermi plan tipine ayarlanmış bir PT alt sınıfı olan mermi sınıfımız var.

73
00:04:55,710 --> 00:04:59,790
‫Öyleyse neden bir değişken alt sınıfı oluşturmak için bu kadar zahmete girelim?

74
00:04:59,790 --> 00:05:03,750
‫Pekala, spawn actor işlevinin nasıl çalıştığını tartışmamız gerekiyor.

75
00:05:04,200 --> 00:05:08,400
‫Spawn actor yeni dünya sınıfına ait bir işlevdir.

76
00:05:08,400 --> 00:05:12,120
‫Yani dünyayı ele geçirirsek, Spawn aktörünü çağırabiliriz.

77
00:05:12,120 --> 00:05:19,620
‫Spawn actor ise başka bir şablon işlevidir ve varsayılan alt nesne oluşturmaya benzer şekilde yeni nesneler oluşturmak

78
00:05:19,620 --> 00:05:21,060
‫için tasarlanmıştır.

79
00:05:21,060 --> 00:05:28,260
‫Ancak varsayılan alt nesne oluşturmak bileşen oluşturmak için tasarlanmıştır ve bunu yalnızca belirli bir sınıf

80
00:05:28,260 --> 00:05:36,360
‫için yapıcıda kullanabiliriz. spawn actor, oyun çalışırken çalışma zamanında çağrılabilir ve aktörler oluşturabilir.

81
00:05:36,360 --> 00:05:39,450
‫Şimdi bu bir şablon, bu yüzden bir tür gerektiriyor.

82
00:05:39,480 --> 00:05:45,780
‫Bir mermi ortaya çıkarmak istiyorsak, C++ sınıf türünü buraya bir mermi olarak aktarırız.

83
00:05:45,810 --> 00:05:52,590
‫Bu, C++'da spawn actor işlevi tarafından döndürülen C++ sınıfıdır.

84
00:05:52,620 --> 00:05:57,060
‫Şimdi parantezler, U sınıfı da dahil olmak üzere bir dizi parametre alır.

85
00:05:57,060 --> 00:06:02,190
‫Şimdi bu fonksiyonun farklı giriş parametreleri alan birden fazla aşırı yüklemesi vardır.

86
00:06:02,190 --> 00:06:07,590
‫Belki de en basit olanı bir U sınıfı, A konumu ve bir rotasyon alan versiyonudur.

87
00:06:07,590 --> 00:06:08,010
‫U.

88
00:06:08,010 --> 00:06:11,280
‫Sınıf, ortaya çıkacak türü temsil eden şeydir.

89
00:06:11,310 --> 00:06:16,020
‫Bu, ortaya çıkarılan nesnenin gerçek türüdür.

90
00:06:16,050 --> 00:06:18,300
‫Bu bir plan sınıfı olabilir.

91
00:06:18,330 --> 00:06:25,890
‫Konum, nesnenin nerede oluşturulacağını belirten bir F vektörüdür ve rotasyon, nesnenin rotasyonunu belirtir.

92
00:06:25,890 --> 00:06:28,710
‫Sözdiziminin bir örneği şuna benzer.

93
00:06:28,710 --> 00:06:35,580
‫Spawn aktörünü sınıf türünü belirterek çağırır ve ardından bu u sınıfı bilgisini konum vektörü ve

94
00:06:35,580 --> 00:06:38,820
‫rotasyon döndürücüsü ile birlikte iletiriz.

95
00:06:38,820 --> 00:06:41,160
‫Bir saniyeliğine sınıfınızdan bahsedelim.

96
00:06:41,160 --> 00:06:44,970
‫Şimdi, söylediğimiz gibi, sınıfınız bir sınıf türünü temsil eder.

97
00:06:44,970 --> 00:06:51,480
‫Spawn actor'ü çağırdığımızda, spawn actor işlevine doğacak nesne hakkında bilgi sağlamak

98
00:06:51,480 --> 00:06:53,550
‫için bir U sınıfı iletiriz.

99
00:06:53,910 --> 00:07:01,860
‫Evet, köşeli parantezler içinde bir tür girdik, ancak bu sadece Spawn aktörüne C++ türünü oluşturmasını söyler.

100
00:07:01,860 --> 00:07:04,890
‫Oysa sizin sınıfınız daha fazla bilgi içerir.

101
00:07:04,890 --> 00:07:11,070
‫Diyelim ki bir mermiye dayalı bir plan oluşturduk ve planda statik ağ bileşeni için statik

102
00:07:11,070 --> 00:07:14,580
‫ağ seçmek gibi bazı özellikler ayarladık.

103
00:07:14,580 --> 00:07:21,480
‫Şimdi eğer sadece ham bir C++ sınıfı ortaya çıkarırsak, o zaman bu statik ağ yeni ortaya çıkan mermi nesnesinde

104
00:07:21,480 --> 00:07:22,860
‫ayarlanmayacaktır.

105
00:07:22,860 --> 00:07:26,250
‫Esasen, görünmez yeni bir aktör ortaya çıkarmış oluruz.

106
00:07:26,430 --> 00:07:30,780
‫Ancak, yeni bir sınıf değişkeni bir plan sınıfını temsil edebilir.

107
00:07:30,930 --> 00:07:37,140
‫Sınıfınız bize C++ tarafında bir blueprint, sınıf tipi ve spawn'ı temsil eden bir değişkene sahip

108
00:07:37,140 --> 00:07:38,730
‫olma yeteneği veriyor.

109
00:07:38,730 --> 00:07:45,900
‫Actor bu sınıfı bir girdi argümanı olarak alabilir, böylece bu yeni sınıf tarafından temsil edilen plan temelinde

110
00:07:45,900 --> 00:07:48,060
‫yeni bir nesne oluşturabilir.

111
00:07:48,060 --> 00:07:54,810
‫Dolayısıyla yeni bir merminin statik ağ özelliği ayarlanacaktır çünkü ham C++ sınıfına değil,

112
00:07:54,810 --> 00:07:58,560
‫blueprint'e dayalı yeni bir nesne oluşturuyoruz.

113
00:07:58,560 --> 00:08:05,190
‫Bu nedenle alt sınıfımızı oluşturduk çünkü yeni bir sınıfı saklayabilir ve BP -- tank

114
00:08:05,190 --> 00:08:10,050
‫planımızdan BP mermisine eşit olarak ayarlayabildik.

115
00:08:10,050 --> 00:08:13,020
‫Artık aktörlerin nasıl ortaya çıkacağını biliyorsunuz.

116
00:08:13,170 --> 00:08:16,020
‫Spawn aktörü yeni dünya sınıfına ait.

117
00:08:16,020 --> 00:08:22,320
‫Yani get world'ü çağırır ve basitçe Spawn aktörünü çağırırsanız, bu işlev için girdi gereksinimlerini

118
00:08:22,320 --> 00:08:30,750
‫biliyorsunuzdur, C++ türünü köşeli parantezler içinde geçirirsiniz ve parantezler içinde bir konum ve bir dönüş sınıflandırırsınız.

119
00:08:30,750 --> 00:08:35,820
‫Meydan okumanız için, mermiyi ortaya çıkaracaksınız, bunu ateşleme fonksiyonunda yapacaksınız.

120
00:08:35,820 --> 00:08:41,760
‫Bu yüzden get world spawn aktörünü çağırın ve köşeli parantez içinde bir mermi geçirin.

121
00:08:41,760 --> 00:08:45,390
‫Bu, projectile için başlık dosyasını eklemeniz gerekeceği anlamına gelir.

122
00:08:45,390 --> 00:08:52,170
‫Bunu unutmayın ve yeni değişken mermi sınıfımızı parantez içindeki U sınıfı giriş parametresi olarak

123
00:08:52,170 --> 00:08:52,920
‫kullanın.

124
00:08:52,920 --> 00:08:55,320
‫Şimdi bir yere ve rotasyona ihtiyacımız var.

125
00:08:55,320 --> 00:09:00,480
‫Hem konum hem de rotasyon için merminin ortaya çıkış noktasını kullanacaksınız.

126
00:09:00,480 --> 00:09:02,850
‫Mermi doğma noktası bileşeninden.

127
00:09:02,850 --> 00:09:09,000
‫Bu değerlere erişmek için get component location ve get component rotation öğelerini çağırabilirsiniz.

128
00:09:09,000 --> 00:09:14,040
‫Bu yüzden videoyu duraklatın ve şimdi yangın işlevinde spawn aktörünü çağırın.

129
00:09:16,920 --> 00:09:17,310
‫Tamam.

130
00:09:17,310 --> 00:09:22,880
‫Şimdi yangın fonksiyonunu tanımladığımız Base Pond CP'ye gidelim.

131
00:09:22,890 --> 00:09:25,230
‫Şimdi burada hata ayıklama küresi çiziyoruz.

132
00:09:25,230 --> 00:09:27,450
‫Artık buna ihtiyacımız olmayacak.

133
00:09:27,450 --> 00:09:33,270
‫Bu yüzden bu fonksiyon çağrısını sileceğim ve bunun yerine burada Spawn aktörünü çağıracağım.

134
00:09:33,270 --> 00:09:36,750
‫Artık merminin ortaya çıkma noktası konumuna zaten sahibiz.

135
00:09:37,050 --> 00:09:43,770
‫Bu yerel değişkeni basitçe konum olarak yeniden adlandıracağım ve yeni bir F döndürücü oluşturacağım.

136
00:09:44,430 --> 00:09:45,810
‫Rotasyon deniyor.

137
00:09:45,900 --> 00:09:50,010
‫Ve bunu da merminin ortaya çıktığı noktadan alacağım.

138
00:09:50,010 --> 00:09:56,670
‫Bu yüzden mermi doğma noktası bileşen rotasyonu olacak.

139
00:09:56,670 --> 00:10:01,980
‫Şimdi elimde merminin ortaya çıkacağı konum ve rotasyon var.

140
00:10:02,430 --> 00:10:07,050
‫Şimdi get world diyebilmek için spawn aktörünü çağırmam gerekiyor.

141
00:10:07,050 --> 00:10:11,910
‫Ve bu fonksiyondan elde ettiğim dünyadan spawn aktörünü çağırabilirim.

142
00:10:12,240 --> 00:10:15,780
‫Şimdi bunun köşeli parantezleri ve parantezleri var, değil mi?

143
00:10:15,780 --> 00:10:19,740
‫Yani köşeli parantezler içinde bir mermi kullanmam gerekiyor.

144
00:10:21,240 --> 00:10:25,640
‫Ve bir mermi kullandığımız için, bunun başlığını eklememiz gerekiyor.

145
00:10:25,650 --> 00:10:32,760
‫Bu yüzden burada, hata ayıklama yardımcılarını kaldıracağım, çizeceğim ve mermi ile değiştireceğim.

146
00:10:34,740 --> 00:10:37,260
‫Şimdi bu tür de dahil edildi.

147
00:10:37,260 --> 00:10:44,070
‫Şimdi U sınıfına ihtiyacımız var ve H'nin mermi sınıfına sahip olduğuna dayanarak, bunu U sınıfı olarak kullanabiliriz.

148
00:10:44,070 --> 00:10:47,050
‫Bu yüzden mermi sınıfına geçeceğiz.

149
00:10:47,070 --> 00:10:54,750
‫Şimdi, son olarak, konumu ve rotasyonu aktarabiliriz ve bu, spawn actor işlevini yerine getirecektir.

150
00:10:54,750 --> 00:11:00,420
‫Şimdi devam edelim ve bunu derleyelim, burada editöre geri döndük ve oynatmayı test edebiliriz.

151
00:11:00,420 --> 00:11:04,080
‫Şimdi gidip tıklayacağım ve kontrol edeceğim.

152
00:11:04,080 --> 00:11:06,750
‫Yeni bir mermi ürettik.

153
00:11:06,750 --> 00:11:13,680
‫Mermiyi namlumuzun ucuna yerleştiriyoruz ve mermi havada asılı kalıyor, bu da

154
00:11:13,680 --> 00:11:15,660
‫pek doğru görünmüyor.

155
00:11:15,660 --> 00:11:16,430
‫Ama sorun değil.

156
00:11:16,440 --> 00:11:17,700
‫Bu birinci adım.

157
00:11:17,700 --> 00:11:23,580
‫İlk olarak mermiyi ortaya çıkarmalıyız, bir sonraki adım olarak mermi gibi davranmasını sağlamalıyız.

158
00:11:23,580 --> 00:11:27,120
‫Yani özetle, artık mermiler üretiyoruz.

159
00:11:27,150 --> 00:11:29,060
‫Bu büyük bir dönüm noktası.

160
00:11:29,070 --> 00:11:32,250
‫Ancak, henüz tam olarak mermi değiller.

161
00:11:32,280 --> 00:11:36,060
‫Orada öylece duruyorlar ve mermilerin havada uçması gerekiyor.

162
00:11:36,210 --> 00:11:41,490
‫Bir sonraki videoda, mermilerimizin gerçekten havada uçmasını nasıl sağlayacağımızdan bahsedeceğiz,

163
00:11:41,490 --> 00:11:43,800
‫böylece mermi gibi davranacaklar.

164
00:11:43,830 --> 00:11:44,700
‫Yakında görüşürüz.

