﻿1
00:00:03,990 --> 00:00:10,110
‫Bu yüzden bir ateş fonksiyonu oluşturacağız ve bu fonksiyonu sol fare tuşumuzla ilişkilendireceğiz.

2
00:00:10,110 --> 00:00:16,350
‫Ve burada, bu eylem eşlemesinin çalıştığını kanıtlamak için taret namlumuzun ucuna hata ayıklama küreleri

3
00:00:16,350 --> 00:00:18,210
‫çizdiğimi görebilirsiniz.

4
00:00:18,210 --> 00:00:21,360
‫Farenin sol tuşuna her tıkladığımda bir şeyler oluyor.

5
00:00:21,720 --> 00:00:23,090
‫Hey, tekrar hoş geldin.

6
00:00:23,100 --> 00:00:28,770
‫Bu videoda, mermilerimizi ortaya çıkarmak istediğimizde kullanabileceğimiz bir ateş fonksiyonu veya

7
00:00:28,770 --> 00:00:31,020
‫bir işlev oluşturmaktan bahsedeceğiz.

8
00:00:31,020 --> 00:00:36,090
‫Bu yüzden bir ateşleme fonksiyonu oluşturacağız ve bunu bir eylem eşlemesine bağlayacağız.

9
00:00:36,090 --> 00:00:38,370
‫Şimdi, eksen eşlemelerini kullanıyoruz.

10
00:00:38,370 --> 00:00:40,260
‫Bir eylem eşlemesi de benzerdir.

11
00:00:40,260 --> 00:00:41,550
‫Şimdi konuşalım.

12
00:00:41,550 --> 00:00:47,280
‫İşte proje ayarlarımızda bulunan yangın eylemi eşlemesinin ekran görüntüsünden bir kesit.

13
00:00:47,280 --> 00:00:51,690
‫Sol fare düğmesinin ateş eylemi eşlemesine atandığını göreceksiniz.

14
00:00:51,690 --> 00:00:55,290
‫Şimdi bir eylem eşlemesi bir eksen eşlemesine çok benzer.

15
00:00:55,290 --> 00:00:57,720
‫Buna bir tuş veya düğme atayabilirsiniz.

16
00:00:57,720 --> 00:01:03,420
‫Ve tıpkı bir eksen eşlemesi gibi, eylem eşlemesine bağlanabilen bir işlev gerektirir.

17
00:01:03,420 --> 00:01:07,440
‫Şimdi, eksen eşlemeleri oyunun her bir karesinde ateşleniyor.

18
00:01:07,440 --> 00:01:12,840
‫Bunlar tic işlevi gibidir ve geçirilen float değeri hangi düğmelere basıldığına bağlı olarak

19
00:01:12,840 --> 00:01:13,590
‫değişir.

20
00:01:13,590 --> 00:01:15,930
‫Eylem eşlemeleri biraz farklıdır.

21
00:01:15,960 --> 00:01:22,740
‫Bir eylem eşlemesine bağlı bir geri arama işlevi hiçbir girdi parametresi almaz ve tek olan düğmeye bastığınızda

22
00:01:22,740 --> 00:01:25,200
‫işlevin çağrılmasıdır.

23
00:01:25,200 --> 00:01:29,430
‫Fonksiyonun içinde ne olacağı geliştirici olarak bize bağlıdır.

24
00:01:29,430 --> 00:01:31,590
‫Şimdi, eylem eşlemeleri tek seferliktir.

25
00:01:31,590 --> 00:01:33,030
‫Her karede olmazlar.

26
00:01:33,030 --> 00:01:35,790
‫Düğmeye bastığınızda yalnızca bir kez gerçekleşir.

27
00:01:35,790 --> 00:01:40,950
‫Yani düğmeyi bırakıp tekrar basarsanız, işlev bir kez daha çağrılacaktır.

28
00:01:40,980 --> 00:01:47,280
‫Şimdi, fonksiyonları eksen eşlemelerine bağladığımızda, eylem eşlemeleri için bind axis kullandık,

29
00:01:47,280 --> 00:01:52,650
‫bind action adında bir fonksiyon kullanıyoruz ve bind axis'e benzer girdiler alıyor.

30
00:01:52,650 --> 00:01:56,400
‫Eylem eşlemesinin adını değişmez bir dize olarak alır.

31
00:01:56,430 --> 00:01:58,710
‫Ayrıca sınıf için bir işaretçi gerektirir.

32
00:01:58,710 --> 00:02:04,470
‫Bunu kullanabileceğimiz fonksiyonu bağlıyoruz ve tabii ki bir geri arama fonksiyonu alıyor.

33
00:02:04,470 --> 00:02:11,580
‫Şimdi, bind axis'in düğmeye bastığımızda mı yoksa düğmeyi bıraktığımızda mı bu işlevin çağrılmasını

34
00:02:11,580 --> 00:02:17,640
‫istediğimizi belirten bir enum sabiti olarak gerektirmediği ek bir parametre alır.

35
00:02:17,640 --> 00:02:24,000
‫Dolayısıyla, bu giriş parametresi için iki seçenek vardır: enum sabiti, i. e. basılı ve enum sabiti,

36
00:02:24,000 --> 00:02:25,350
‫i. e. serbest bırakıldı.

37
00:02:25,350 --> 00:02:31,110
‫Bu, i değerini girerek bind eylemini çağırabileceğimiz anlamına gelir. e. düğmesine bastığımızda bir geri arama işlevi

38
00:02:31,110 --> 00:02:36,960
‫bağlamak istiyorsak ve bunun yerine i. e. serbest bırakıldığında, düğme ateşleme fonksiyonumuz

39
00:02:36,960 --> 00:02:40,380
‫için serbest bırakıldığında geri arama fonksiyonumuz çağrılacaktır.

40
00:02:40,380 --> 00:02:42,900
‫Biz düğmeye ne zaman basacağımızla ilgileniyoruz.

41
00:02:42,900 --> 00:02:46,890
‫Öyleyse bir fire fonksiyonu oluşturalım ve bunu fire eylem eşlemesine bağlayalım.

42
00:02:46,890 --> 00:02:53,490
‫Şimdi burada base spawn'dayım ve base pond'da olmamın nedeni bu ateş fonksiyonunun tank sınıfında

43
00:02:53,490 --> 00:02:57,270
‫ve kule sınıfında kullanabileceğimiz bir şey olması.

44
00:02:57,270 --> 00:03:03,030
‫Dolayısıyla, bunu buraya temel gölete yerleştirirsek, hem Tank hem de kule bu işlevi miras alacaktır.

45
00:03:03,030 --> 00:03:10,230
‫Hem tank hem de kule mermileri ateşleyeceği için, bu işlevi miras alıp kullanabilirler.

46
00:03:10,260 --> 00:03:16,530
‫Şimdi, her iki alt sınıfta da işleve erişim istediğim için, bu işlevi tıpkı rotate turret gibi

47
00:03:16,530 --> 00:03:19,500
‫protected bölümüne yerleştirebilirim.

48
00:03:19,500 --> 00:03:26,220
‫Bu yüzden rotate turret altında hiçbir girdi almayan fire adında bir void fonksiyon oluşturacağım

49
00:03:26,220 --> 00:03:30,780
‫ve CPP'ye dayalı olarak fire fonksiyonunu tanımlayabiliriz.

50
00:03:30,780 --> 00:03:36,990
‫Burada CPP'yi temel alıyorum ve rotate turret'in hemen altına fire fonksiyonunu yerleştireceğim ve bu fonksiyon adını

51
00:03:36,990 --> 00:03:41,430
‫tam olarak nitelendirmemiz ve ona bir fonksiyon gövdesi vermemiz gerekiyor.

52
00:03:41,430 --> 00:03:43,680
‫Şimdi bir yangın fonksiyonumuz var.

53
00:03:43,680 --> 00:03:47,040
‫Şimdi bir sonraki adım bunu bir eylem eşlemesine bağlamaktır.

54
00:03:47,040 --> 00:03:53,190
‫Şimdi bu fonksiyonu sadece tank sınıfına bağlamak istiyoruz çünkü tank, kullanıcı girdisini

55
00:03:53,190 --> 00:03:54,720
‫alacak tek sınıftır.

56
00:03:54,720 --> 00:03:59,610
‫Kule sınıfındaki yangın fonksiyonunu daha sonra çağıracağız, ancak bu kullanıcı girdisinin bir sonucu

57
00:03:59,610 --> 00:04:02,820
‫olarak değil, oluşturduğumuz kodun bir sonucu olarak olacaktır.

58
00:04:02,820 --> 00:04:08,730
‫Burada Tank CP'deyiz ve bunu bağlayacağız ve tıpkı bind axis'i kullandığımız gibi oyuncu giriş bileşenini

59
00:04:08,730 --> 00:04:10,290
‫ayarlayacağız.

60
00:04:10,290 --> 00:04:12,900
‫Bu yüzden oyuncu giriş bileşenini kullanacağız.

61
00:04:12,900 --> 00:04:18,720
‫Yani oyuncu giriş bileşeni ve işlev bind action olacak.

62
00:04:18,720 --> 00:04:24,150
‫Şimdi ilk girdi, her zamanki gibi bir metin makrosuna saracağımız string literal

63
00:04:24,150 --> 00:04:24,780
‫olacak.

64
00:04:24,780 --> 00:04:27,810
‫Ve bu eylem eşlemesine yangın denir.

65
00:04:27,960 --> 00:04:34,080
‫Şimdi bir sonraki parametre, bu fonksiyonun düğmeye bastığımızda mı yoksa düğmeyi bıraktığımızda

66
00:04:34,080 --> 00:04:39,000
‫mı çağrılmasını istediğimizi belirleyen enum sabiti olacak.

67
00:04:39,000 --> 00:04:42,150
‫Ve kullanacağız, altını çiziyorum.

68
00:04:43,170 --> 00:04:46,260
‫Düğmeye bastığımızda fonksiyonumuzun çağrılmasını istediğimiz için.

69
00:04:46,260 --> 00:04:49,520
‫Şimdi, sırada bu olacak olan kullanıcı sınıfı nesnesi var.

70
00:04:49,530 --> 00:04:55,620
‫Ve son olarak, bir tank ateşi diyebilmemiz için geri arama işlevimiz var.

71
00:04:55,770 --> 00:05:00,690
‫Ve şimdi fire fonksiyonumuz fire action eşlemesine bağlandı.

72
00:05:00,690 --> 00:05:07,200
‫Yangın işlevimizin yangın eylemi eşlemesine bağlı olduğunu biliyoruz, ancak görsel bir onay istiyoruz

73
00:05:07,200 --> 00:05:09,900
‫ve sizin göreviniz de bu olacak.

74
00:05:09,900 --> 00:05:14,130
‫Bu yüzden ateşleme fonksiyonunda bir hata ayıklama küresi çizmenizi istiyorum.

75
00:05:14,130 --> 00:05:19,440
‫Bunu nasıl yapacağımızı zaten gördük, bu yüzden devam edin ve parametreleri uygun olduğunu düşündüğünüz

76
00:05:19,440 --> 00:05:20,640
‫değerlerle doldurun.

77
00:05:20,670 --> 00:05:24,030
‫Merminin ortaya çıkma noktasının konumunu kullanın.

78
00:05:24,270 --> 00:05:30,210
‫Şimdi, merminin ortaya çıkma noktası bir kullanım sahnesi bileşenidir ve bileşenlerin get component location adlı bir

79
00:05:30,210 --> 00:05:32,100
‫işlevi olduğunu görmüşsünüzdür.

80
00:05:32,100 --> 00:05:33,780
‫Bu bir F vektörü döndürür.

81
00:05:33,810 --> 00:05:38,220
‫Bu, mermi doğma noktası konumunu elde etmek için kullanabileceğiniz şeydir.

82
00:05:38,220 --> 00:05:45,630
‫Şimdi hata ayıklama küresi çiz dediğinizde, yaklaşık 3 saniyelik bir süre kullanın, böylece küreyi kaybolmadan

83
00:05:45,630 --> 00:05:47,760
‫önce bir süre görebiliriz.

84
00:05:47,760 --> 00:05:50,460
‫Videoyu duraklatın ve bunu şimdi yapın.

85
00:05:53,360 --> 00:05:53,550
‫Tamam.

86
00:05:53,660 --> 00:05:56,810
‫Bass Pond'a ve Bass Pond'a geri döndüm.

87
00:05:57,110 --> 00:06:00,770
‫CP Hata ayıklama yardımcılarını çizeceğim.

88
00:06:00,770 --> 00:06:03,500
‫Böylece hata ayıklama küresi çizmeye erişimimiz olur.

89
00:06:03,500 --> 00:06:07,010
‫Bu yüzden hata ayıklama yardımcılarını dahil edin diyeceğim.

90
00:06:08,240 --> 00:06:12,320
‫Ve şimdi burada, ateşleme işlevinde, hata ayıklama küresini çizebiliriz.

91
00:06:12,350 --> 00:06:18,050
‫Şimdi, yapmak istediğim ilk şey merminin ortaya çıkma noktasının yerini bulmak.

92
00:06:18,080 --> 00:06:26,240
‫Şimdi bunun için yerel bir f vektörü oluşturabilirim ve bu mermi doğma noktası konumunu çağırabilirim ve mermi doğma

93
00:06:26,240 --> 00:06:29,870
‫noktasını kullanarak onu başlatabilirim.

94
00:06:32,030 --> 00:06:35,780
‫Ve bileşen konumunu al çağrısı.

95
00:06:35,780 --> 00:06:43,100
‫Artık merminin doğma noktasının konumuna sahibim ve bu, hata ayıklama küresi çizerken kullanabileceğim

96
00:06:43,100 --> 00:06:43,850
‫şey.

97
00:06:43,850 --> 00:06:46,130
‫Bu yüzden hata ayıklama küresi çiz diyeceğim.

98
00:06:47,450 --> 00:06:53,720
‫Ve ilk girdi için dünyaya ihtiyacımız var ve dünyayı get world next kullanarak alabileceğimizi biliyoruz.

99
00:06:53,720 --> 00:06:59,810
‫Merminin ortaya çıkma noktası konumumuz olacak kürenin merkezine ihtiyacımız var.

100
00:06:59,810 --> 00:07:04,190
‫Bu yüzden ikinci parametre olarak bunu gireceğim.

101
00:07:04,190 --> 00:07:06,190
‫Şimdi de kürenin yarıçapına ihtiyacımız var.

102
00:07:06,200 --> 00:07:08,330
‫Şimdi küçük bir küreye sahip olacağım.

103
00:07:08,480 --> 00:07:15,920
‫Yarıçap olarak 25 F vereceğim, segment sayısı için 12 kullanacağım ve renk için F rengini

104
00:07:15,920 --> 00:07:17,690
‫kullanabilirim.

105
00:07:18,680 --> 00:07:21,380
‫Read Now dört kalıcı çizgi çizin.

106
00:07:21,380 --> 00:07:27,500
‫Satırlarımızın 3 saniye boyunca asılı kalmasını sağlayacağız, böylece bunu yanlış yapabiliriz çünkü sonsuza kadar devam

107
00:07:27,500 --> 00:07:28,910
‫etmelerini istemiyoruz.

108
00:07:28,940 --> 00:07:36,380
‫Bu hata ayıklama küresine üç F'lik bir kullanım ömrü vereceğiz. Şimdi devam edip bunu derleyelim ve play tuşuna

109
00:07:36,380 --> 00:07:42,230
‫basıp tıklayacağım ve şimdi hata ayıklama küremizi görebiliriz ve tabii ki 3 saniye sonra

110
00:07:42,230 --> 00:07:43,310
‫kaybolur.

111
00:07:43,640 --> 00:07:49,880
‫Şimdi bu, eylem eşlememizin çalıştığına dair iyi bir onaydır ve aynı zamanda bize merminin

112
00:07:49,880 --> 00:07:53,450
‫ortaya çıkma noktasının yerini doğrulamaktadır.

113
00:07:53,450 --> 00:07:59,600
‫Böylece mermileri gerçekten ortaya çıkarmaya başladığımızda, hata ayıklama küresi tarafından gösterildiği gibi

114
00:07:59,600 --> 00:08:02,420
‫doğru konumda ortaya çıkacaklarını biliyoruz.

115
00:08:02,420 --> 00:08:03,500
‫Yani bu harika.

116
00:08:03,650 --> 00:08:09,470
‫Bu videoda bir yangın fonksiyonu oluşturduk ve bunu yangın eylemi eşlemesine bağladık.

117
00:08:09,740 --> 00:08:15,800
‫Ve çalıştığını kanıtlamak için, sol fare düğmesine her tıkladığımızda mermi ortaya çıkma noktasına bir hata ayıklama

118
00:08:15,830 --> 00:08:21,710
‫küresi çizdik, böylece bir ateşleme fonksiyonumuz var, mermileri ortaya çıkarmaya neredeyse hazırız.

119
00:08:21,710 --> 00:08:25,250
‫Ayrıca bu fonksiyonu temel pong sınıfına da yerleştirdik.

120
00:08:25,250 --> 00:08:27,980
‫Böylece kulemiz de bunu kullanabilir.

121
00:08:27,980 --> 00:08:32,990
‫Bir sonraki videoda, kulemizin bu işlevi nasıl kullanacağını tartışacağız.

122
00:08:33,530 --> 00:08:34,460
‫Yakında görüşürüz.

