﻿1
00:00:04,380 --> 00:00:04,920
‫Hey.

2
00:00:04,920 --> 00:00:05,810
‫Tekrar hoş geldiniz.

3
00:00:05,820 --> 00:00:11,610
‫Oyunumuzu bitirmeye hazırız, yani oyunumuzu cilalamak ve mutlu olduğumuz bir duruma getirmek

4
00:00:11,610 --> 00:00:15,150
‫için yapmamız gereken sadece birkaç şey kaldı.

5
00:00:15,150 --> 00:00:17,730
‫O yüzden bu oyunu bitirmeye hazır olun.

6
00:00:17,730 --> 00:00:19,170
‫Neredeyse bitti.

7
00:00:19,170 --> 00:00:21,450
‫Sadece birkaç özellik ekleyeceğiz.

8
00:00:21,450 --> 00:00:25,980
‫Kamera hareketini biraz daha yumuşak hale getirmek istiyorum, bu yüzden bununla başlayacağız.

9
00:00:26,010 --> 00:00:32,130
‫Ayrıca, tank öldükten sonra kulelerin hala mermileri ateşlediğini fark ettim, bu yüzden bunun olmasını

10
00:00:32,130 --> 00:00:35,250
‫önlemek için kodda kolay bir düzeltme yapabiliriz.

11
00:00:35,250 --> 00:00:40,410
‫Ayrıca, merminin ortaya çıkma noktasıyla ilgili potansiyel bir sorunu ziyaret edeceğim.

12
00:00:40,410 --> 00:00:43,380
‫Haydi başlayalım ve bu oyunu parlatalım.

13
00:00:43,740 --> 00:00:46,920
‫Şimdi, bakmak istediğim ilk şey kamera hareketi.

14
00:00:46,920 --> 00:00:50,670
‫Şimdi oynat tuşuna basarsam, size ne demek istediğimi göstereceğim.

15
00:00:50,820 --> 00:00:58,380
‫Ben hareket ettikçe, kameranın biz döndükçe ve biz ileri ve geri hareket ettikçe hareketimizi

16
00:00:58,380 --> 00:01:03,210
‫tam olarak takip ettiğini göreceksiniz.

17
00:01:03,210 --> 00:01:08,850
‫Şimdi, bu kameraya ekleyebileceğimiz ve onu biraz daha pürüzsüz hale getirebilecek güzel bir numara var.

18
00:01:08,850 --> 00:01:11,730
‫Devam edelim ve BP havuz tankını açalım.

19
00:01:11,940 --> 00:01:16,830
‫Şimdi burada BP Pond Tank'ta yaylı kol bileşenimizi seçeceğim.

20
00:01:16,830 --> 00:01:23,580
‫Kamera gecikmesi için arama yaparsam, burada gecikme bölümünde kamera gecikmesini etkinleştir onay kutusunun olduğunu

21
00:01:23,580 --> 00:01:24,360
‫göreceğim.

22
00:01:24,390 --> 00:01:28,440
‫Bunu kontrol edeceğim ve kamera dönüş gecikmesini etkinleştireceğim.

23
00:01:28,470 --> 00:01:30,240
‫Bunu da kontrol edeceğim.

24
00:01:30,240 --> 00:01:37,590
‫Şimdi, bu bize kameranın geride kalmasını ve sorunsuz bir şekilde yetişmesini sağlar, bu da hoş bir tür profesyonel

25
00:01:37,590 --> 00:01:39,780
‫kamera efekti yaratır.

26
00:01:39,780 --> 00:01:42,810
‫Hadi devam edelim ve play tuşuna basıp bunu test edelim.

27
00:01:42,810 --> 00:01:50,490
‫Ben hareket ettikçe, kameranın biz hareket ederken bize yetişmesi için kısa bir süre geçtiğine dikkat edin.

28
00:01:50,490 --> 00:01:53,190
‫Aynı şey rotasyon yaptığımız zamanlar için de geçerli.

29
00:01:53,190 --> 00:02:00,840
‫Yani sanki biraz atalet var ve kamera bir tür kayan ray üzerinde ve durmak için yavaşlıyor.

30
00:02:00,840 --> 00:02:07,710
‫Şimdi yaylı kolu seçebilir ve kamera gecikme hızını ve dönüş gecikme hızını değiştirebiliriz.

31
00:02:07,710 --> 00:02:15,300
‫Örneğin, bunu daha küçük bir değere yerleştirirsem, diyelim ki on yerine beş ve beş, şimdi nasıl göründüğüne

32
00:02:15,300 --> 00:02:16,950
‫bir bakalım.

33
00:02:17,040 --> 00:02:21,450
‫Hareket ediyorum ve kameranın biraz daha gecikmeli olduğunu göreceksiniz.

34
00:02:21,450 --> 00:02:25,170
‫Şimdi, bunu uygun gördüğümüz şekilde artırabilir veya azaltabiliriz.

35
00:02:25,170 --> 00:02:31,170
‫Bu, deneyebileceğiniz ve sizin için işe yarayan değerleri bulabileceğiniz bir şeydir.

36
00:02:31,200 --> 00:02:36,930
‫Burada iki değerimiz var ve benim için bu biraz fazla gecikme.

37
00:02:36,930 --> 00:02:41,100
‫Sanırım beş ile iki arasında bir şey benim için uygun olacaktır.

38
00:02:41,100 --> 00:02:46,290
‫Bu tür bir değeri seviyorsanız, belki iki ya da daha düşük bir değerde tutabilirsiniz.

39
00:02:46,290 --> 00:02:55,320
‫Ancak bunu kamera gecikme hızı için dört ve kamera dönüş gecikme hızı için dört gibi bir değere koyacağım.

40
00:02:55,350 --> 00:02:57,270
‫Bunun nasıl göründüğüne bir göz atalım.

41
00:02:57,270 --> 00:02:59,850
‫Ben hareket ettikçe kamera gecikiyor.

42
00:02:59,850 --> 00:03:03,660
‫Kamerada bir miktar gecikme olduğu açık, ancak çok fazla değil.

43
00:03:03,660 --> 00:03:09,660
‫Bence bu aslında oldukça iyi görünüyor, bu yüzden bundan oldukça memnunum.

44
00:03:10,320 --> 00:03:15,960
‫Bir sonraki öğemiz, tank zaten öldükten sonra kulenin ateşlenmesi.

45
00:03:15,960 --> 00:03:18,930
‫Size ne demek istediğimi göstereyim.

46
00:03:19,020 --> 00:03:19,740
‫İşte oldu.

47
00:03:19,740 --> 00:03:23,880
‫Tank öldü ve kuleler hâlâ ateş ediyor.

48
00:03:23,970 --> 00:03:26,970
‫Bunun nedeni tankın hâlâ var olmasıdır.

49
00:03:26,970 --> 00:03:31,290
‫Ve ateş menzilinde olduğu sürece, kuleler ateş etmeye devam edecektir.

50
00:03:31,290 --> 00:03:38,130
‫Bu, tankın ölüp ölmediğini kontrol edebileceğimiz bir tür değişkene sahip olarak kolayca halledilebilir.

51
00:03:38,520 --> 00:03:45,690
‫Bu yüzden tank sınıfına gireceğim ve tankın hala canlı olup olmadığını kontrol edebileceğimiz

52
00:03:45,690 --> 00:03:48,690
‫bir Boolean değişkeni ekleyeceğim.

53
00:03:48,690 --> 00:03:53,580
‫Ve sınıf dışından erişmeyi planladığımız için bunu herkese açık yapacağım.

54
00:03:53,580 --> 00:04:01,500
‫Bu yüzden bunu Be Alive adında bir boğa değişkeni yapacağım ve varsayılan olarak true değerine eşitleyeceğim.

55
00:04:01,500 --> 00:04:09,270
‫Böylece tank canlı durumda başlayacak ve daha sonra tank öldüğünde, canlı yanlış olarak ayarlanacaktır.

56
00:04:09,270 --> 00:04:14,130
‫Bu da tank CP'sinde sap yıkımında gerçekleşebilir.

57
00:04:14,130 --> 00:04:16,530
‫Şimdi yıkımı ele alalım.

58
00:04:16,530 --> 00:04:23,070
‫Ve bu diğer özellikleri ayarladıktan sonra, B alive değerini false değerine eşitleyeceğim.

59
00:04:23,190 --> 00:04:29,730
‫B alive değerini false olarak ayarladığımız için, tankın ölüp ölmediğini anlayabilir ve bu booleanı kontrol

60
00:04:29,730 --> 00:04:33,120
‫ederek mermilerin ateşlenmesini önleyebiliriz.

61
00:04:33,120 --> 00:04:38,790
‫Şimdi Tower Dot, CP'ye gidelim ve burada yangın durumunu kontrol edelim.

62
00:04:38,790 --> 00:04:42,990
‫Ateş etmeden önce tankın hâlâ hayatta olduğundan emin olabiliriz.

63
00:04:42,990 --> 00:04:46,290
‫Bu yüzden önce tankın geçerli olup olmadığına bakacağım.

64
00:04:46,290 --> 00:04:52,560
‫Eğer tank null pointer'a eşitse, o zaman erken döneceğimi söyleyeceğim.

65
00:04:52,560 --> 00:04:59,010
‫Bu şekilde Tank'ın geçerli olacağını biliyoruz ve sonra ateş menzilinde olup olmadığımızı kontrol ederken,

66
00:04:59,010 --> 00:05:03,420
‫bir ve ekleyeceğim ve Tank'ın hayatta olup olmadığına bakacağım.

67
00:05:03,450 --> 00:05:03,870
‫Eğer tanksa.

68
00:05:03,980 --> 00:05:05,830
‫Yaşıyorsa ateş edebiliriz.

69
00:05:05,840 --> 00:05:08,840
‫Eğer Tank hayatta değilse, ateş etmeyeceğiz.

70
00:05:09,020 --> 00:05:14,900
‫Şimdi, önceki videolarda yaptığımı gördüğünüz gibi dönüşü tek bir satıra koymanın iyi bir fikir olup olmadığını

71
00:05:14,900 --> 00:05:16,610
‫merak ediyor olabilirsiniz.

72
00:05:16,610 --> 00:05:23,960
‫Bu da Unreal Engines, en iyi programlama uygulamaları ve önerileri tartışmak için iyi bir fırsat.

73
00:05:23,990 --> 00:05:30,590
‫Unreal engine kodlama uygulamaları, tek bir ifadeye sahip olanlar da dahil olmak üzere tüm if ifadeleriniz için bir gövde

74
00:05:30,590 --> 00:05:33,080
‫ile küme parantezleri kullanmanızı önerir.

75
00:05:33,080 --> 00:05:39,200
‫Bunun nedeni, buna birden fazla kod satırı eklemeyi planlıyorsanız, zaten burada bir gövdeye sahip

76
00:05:39,200 --> 00:05:40,190
‫olmanızdır.

77
00:05:40,190 --> 00:05:41,690
‫Ayrıca daha net.

78
00:05:41,690 --> 00:05:46,160
‫Bu da beni başka bir noktaya, yani otomatik kullanımıma getiriyor.

79
00:05:46,190 --> 00:05:53,720
‫Burada projectile sınıfında birkaç kez auto kullandım ve bu verimli olsa da, ilk bakışta

80
00:05:53,720 --> 00:06:01,940
‫türlerin ne olduğu o kadar açık değil, bu yüzden auto kullanımı unreal engine kodlama uygulamalarında

81
00:06:01,940 --> 00:06:04,220
‫da önerilmiyor.

82
00:06:04,220 --> 00:06:09,770
‫Unreal Engine'in önerdiği kodlama uygulamalarına sadık kalmak istiyorsanız, bu auto örneklerini gerçek

83
00:06:09,770 --> 00:06:11,570
‫türle değiştirebilirsiniz.

84
00:06:11,570 --> 00:06:19,460
‫Örneğin, burada, get instigator controller bir A controller döndürür, böylece bunu bir controller olarak değiştirebiliriz

85
00:06:19,550 --> 00:06:20,990
‫ve bu bir işaretçidir.

86
00:06:20,990 --> 00:06:29,210
‫Bu hasar türü static class bir U sınıfı döndürür, bu nedenle burada you class'ı kullanabiliriz ve tabii

87
00:06:29,210 --> 00:06:37,940
‫ki burada get owner bir a actor döndürür, bu nedenle burada auto yerine a actor kullanabiliriz ve şimdi bu koda

88
00:06:37,940 --> 00:06:44,840
‫bakarsanız, bu türlerin ne olduğu çok daha açıktır, oysa auto her şeyi maskeler ve tembel

89
00:06:44,840 --> 00:06:48,740
‫olmanıza ve türleri yazmamanıza izin verir.

90
00:06:48,740 --> 00:06:55,790
‫Şimdi bazen büyük bir ifadenin ne döndürdüğünden emin olamıyorum, bu yüzden sadece bu türün ne olduğunu görmek

91
00:06:55,790 --> 00:07:00,410
‫için auto kullanacağım ve daha sonra bunu gerçek türle değiştireceğim.

92
00:07:00,410 --> 00:07:07,880
‫Bu da auto'yu, bunun gibi uzun ve karmaşık ifadelerin döndürdüğü türleri öğrenmenize yardımcı olması için kullanabileceğiniz bir başka

93
00:07:07,880 --> 00:07:08,540
‫yoldur.

94
00:07:08,540 --> 00:07:14,120
‫Bu yüzden, cilalama aşamalarında olduğumuz için, auto'yu burada projectile'daki gerçek tür adlarıyla

95
00:07:14,120 --> 00:07:15,350
‫değiştireceğim.

96
00:07:15,380 --> 00:07:23,390
‫Ayrıca bu mermiye sahip olduğumuz ve bunun buradaki büyük uzun ifadeden döndürüldüğü ateşleme işlevindeki

97
00:07:23,390 --> 00:07:25,940
‫temel piyona da gireceğim.

98
00:07:25,940 --> 00:07:34,550
‫Spawn aktörü bu durumda bir mermi döndürecek, bu yüzden bunu bir mermi ile değiştirebilirim.

99
00:07:35,640 --> 00:07:36,150
‫Tamam.

100
00:07:36,150 --> 00:07:39,840
‫Bu da C++ tarafındaki kodu geliştirecek.

101
00:07:39,840 --> 00:07:41,850
‫Devam edelim ve bunu derleyelim.

102
00:07:41,850 --> 00:07:47,910
‫Başarılı bir derlemenin ardından editöre geri dönelim, play tuşuna basalım ve biz öldükten

103
00:07:47,910 --> 00:07:52,890
‫sonra kulelerin bize ateş etmeyi bıraktığından emin olalım.

104
00:07:52,890 --> 00:07:54,180
‫Yani bir vuruş var.

105
00:07:55,050 --> 00:08:00,270
‫Bir tane daha var, bekliyorum ve başka mermi görmüyorum.

106
00:08:00,300 --> 00:08:01,230
‫Mükemmel.

107
00:08:01,260 --> 00:08:01,680
‫Tamam.

108
00:08:01,680 --> 00:08:07,500
‫Bu konuyu kapatmadan önce değinmek istediğim son nokta, mermilerin ortaya çıkma noktası.

109
00:08:07,530 --> 00:08:15,120
‫Şimdi bunu BP Pond Tank'ta seçelim ve varilden yeterince uzakta olduğundan emin olalım.

110
00:08:15,150 --> 00:08:19,890
‫Bunu yapmadan önce, gerçekten çok yakın bir yere yerleştireceğim ve size potansiyel olarak ortaya çıkabilecek

111
00:08:19,890 --> 00:08:21,240
‫bazı sorunları göstereceğim.

112
00:08:21,270 --> 00:08:27,570
‫Şimdi, ilerlerken ve sol fare düğmesine tıklarken, mermiyi görmediğimi göreceksiniz.

113
00:08:27,570 --> 00:08:31,530
‫Aslında hiç göremiyorum çünkü çok yakın.

114
00:08:31,530 --> 00:08:33,100
‫Zaten bir çarpışma yaşıyoruz.

115
00:08:33,120 --> 00:08:35,970
‫Bir şey yapamadan yok ediliyor.

116
00:08:35,970 --> 00:08:39,810
‫Bu yüzden namludan iyi bir uzaklıkta olduğundan emin olun.

117
00:08:39,840 --> 00:08:45,960
‫Zaten bir miktar duman üretiyoruz, bu yüzden arkasında bir duman izi varmış gibi görünecek.

118
00:08:45,960 --> 00:08:48,450
‫Yani bu yine de oldukça gerçekçi görünecek.

119
00:08:49,970 --> 00:08:51,250
‫Bu oldukça iyi görünüyor.

120
00:08:51,260 --> 00:08:58,040
‫Mermi çıkış noktalarından bahsetmişken, BP gölet kulesine gidip bakmak ve mermi çıkış noktasını

121
00:08:58,040 --> 00:09:01,010
‫seçmek iyi bir fikir olabilir.

122
00:09:01,010 --> 00:09:05,270
‫Ve eğer taretten mermi çıkmasında herhangi bir sorun yaşadıysanız,

123
00:09:05,270 --> 00:09:10,570
‫taretin namlusundan iyi bir mesafe uzakta olduğundan emin olmak isteyebilirsiniz.

124
00:09:10,580 --> 00:09:11,810
‫İşte bu kadar.

125
00:09:11,810 --> 00:09:15,980
‫İşlevsel bir oyunumuz var ve harika görünüyor.

126
00:09:15,980 --> 00:09:21,650
‫Dünyada yuvarlanma yeteneğimiz var, mermi atma yeteneğimiz var ve bunlar bir şeyleri havaya

127
00:09:21,650 --> 00:09:22,760
‫uçuruyor.

128
00:09:22,760 --> 00:09:25,190
‫Eğer bir kuleyi vurursak, onu yok edebiliriz.

129
00:09:25,190 --> 00:09:28,430
‫Eğer kule bize çarparsa, bizi yok edebilir.

130
00:09:29,380 --> 00:09:30,700
‫Aynen böyle.

131
00:09:30,700 --> 00:09:38,110
‫Ve ekranda görüntülenen ve oyunu kazandığımızı veya kaybettiğimizi bize söyleyen HUD widget'ları ile kazanma

132
00:09:38,110 --> 00:09:40,330
‫ve kaybetme koşullarımız var.

133
00:09:40,330 --> 00:09:42,610
‫Yani bu harika.

134
00:09:42,610 --> 00:09:48,670
‫Ve eğer bu oyunu paketlemek isterseniz, bunu en üste gidip platformlar simgesine tıklayarak

135
00:09:48,670 --> 00:09:56,710
‫kolayca yapabilirsiniz, eğer bir Windows makinesindeyseniz Windows için veya bir mac makinesi kullanıyorsanız iOS için,

136
00:09:56,710 --> 00:10:00,670
‫o zaman elbette bu diğer seçeneklere sahipsiniz.

137
00:10:00,670 --> 00:10:06,640
‫Diğer platformlar için paket yapmak istiyorsanız, farklı platformları ve bunlar için nasıl paket yapacağınızı öğrenmek için internette

138
00:10:06,640 --> 00:10:08,980
‫biraz araştırma yapmanızı tavsiye ederim.

139
00:10:08,980 --> 00:10:14,920
‫Ben bir Windows makinesindeyim, bu yüzden burada Windows için package project'e tıklayabilirim ve bana oyunumu

140
00:10:14,920 --> 00:10:17,410
‫nerede paketlemek istediğimi soracak.

141
00:10:17,410 --> 00:10:19,780
‫Şimdi Tune Tanks'te bir projem var.

142
00:10:19,780 --> 00:10:24,670
‫Sağ tıklayıp yeni bir klasör oluşturacağım ve buna basitçe yapı adını vereceğim.

143
00:10:24,670 --> 00:10:29,110
‫Burası genellikle paketlenmiş bir projeyi koyacağınız yerdir.

144
00:10:29,110 --> 00:10:34,720
‫Bu yüzden bu klasörü seçeceğim ve Unreal Engine'in oyunumu paketlemesine izin vereceğim.

145
00:10:34,720 --> 00:10:40,300
‫Muhtemelen birkaç dakika sürecek ve bittiğinde paketlenmiş bir oyunum olacak.

146
00:10:41,080 --> 00:10:41,530
‫Tamam.

147
00:10:41,530 --> 00:10:48,070
‫Paketlemeyi bitirdiğimde, çıktı günlüğünde derleme işleminin başarılı olduğunu görmeliyiz ve ardından paketlenmiş

148
00:10:48,070 --> 00:10:51,970
‫projemiz için belirlediğimiz klasöre bakabiliriz.

149
00:10:51,970 --> 00:10:54,670
‫Benim için bu yapı klasörü olacak.

150
00:10:54,700 --> 00:11:02,220
‫Şimdi dört pencere paketledim, bu yüzden bir Windows klasörüm var ve işte ayar tanklarım, nokta xy.

151
00:11:02,230 --> 00:11:03,490
‫Bu bir çalıştırılabilir.

152
00:11:03,520 --> 00:11:08,440
‫Üzerine çift tıklayabiliyorum ve işte nihai projem.

153
00:11:08,440 --> 00:11:09,490
‫Ateş edebilirim.

154
00:11:09,580 --> 00:11:11,260
‫Kaçabilirim.

155
00:11:11,990 --> 00:11:18,110
‫Görünüşe göre düşman kulelerim bana ateş edebilir ve ben de onları yok edebilirim.

156
00:11:18,110 --> 00:11:19,550
‫Evet, onları yok edebilirim.

157
00:11:19,550 --> 00:11:23,240
‫Görünüşe göre beni yok edebilirler ve ben de oyunu kaybedebilirim.

158
00:11:23,360 --> 00:11:26,990
‫Ve tabii ki biraz daha yetenekli olsaydım oyunu kazanabilirdim.

159
00:11:27,170 --> 00:11:33,230
‫Ve son göreviniz için, sizi oyuna kendi lezzetinizi katmakla görevlendireceğim.

160
00:11:33,230 --> 00:11:35,420
‫Bu oyunu kendiniz yapın.

161
00:11:35,420 --> 00:11:42,200
‫Bazı yeni sesler, efektler veya ağlar bulun ve korkak görünümlü kuleler ve tanklar oluşturun.

162
00:11:42,200 --> 00:11:48,410
‫Daha fazla kule ekleyin, belki farklı beceri seviyeleri ekleyin, seviyeniz boyunca ilerledikçe kuleleri daha

163
00:11:48,410 --> 00:11:49,580
‫da zorlaştırın.

164
00:11:49,580 --> 00:11:56,480
‫Belki tankın seviyesini yükseltebilir, daha fazla kule yıktıkça artırabileceğiniz bir seviye verebilirsiniz.

165
00:11:56,480 --> 00:12:03,980
‫Belki yeni seviye geometrisi ekleyebilir ve tankın rampaları tırmanmasını ve ulaşılması zor bölgelerdeki tankları yok etmeye çalışmasını

166
00:12:03,980 --> 00:12:05,330
‫sağlayabilirsiniz.

167
00:12:05,360 --> 00:12:09,050
‫Olasılıklar sonsuzdur, ama en önemlisi, eğlenin.

168
00:12:09,050 --> 00:12:10,700
‫Siz oyunlarınızı geliştirirken.

169
00:12:10,700 --> 00:12:13,160
‫Bu meydan okuma için videoyu duraklatmayacaksınız.

170
00:12:13,160 --> 00:12:19,070
‫Bu, bu noktadan sonra oyun projelerinizde yapabileceğiniz bir şey olacak.

171
00:12:19,070 --> 00:12:20,630
‫Tebrik ederim.

172
00:12:20,630 --> 00:12:21,980
‫Oyunumuzu bitirdik.

173
00:12:21,980 --> 00:12:23,750
‫Umarım bu bölümü beğenmişsinizdir.

174
00:12:23,750 --> 00:12:25,460
‫Çok eğlendim.

175
00:12:25,460 --> 00:12:28,790
‫Bu harika bir oyun projesi ve uzun bir yol kat ettiniz.

176
00:12:28,790 --> 00:12:34,070
‫Kursun bu bölümü boyunca bir sürü beceri öğrendiniz, umarım daha heyecan verici şeylere

177
00:12:34,070 --> 00:12:35,930
‫geçmeye hazırsınızdır.

178
00:12:35,930 --> 00:12:36,890
‫Çok teşekkür ederim.

179
00:12:36,890 --> 00:12:39,770
‫Ben Steven ve yakında görüşeceğiz.

