﻿1
00:00:04,390 --> 00:00:05,440
‫Merhaba ve hoş geldiniz.

2
00:00:05,440 --> 00:00:10,000
‫Bu derste, BP oynatıcımıza yeni bir bileşen ekleyeceğiz, fizik tutacağı.

3
00:00:10,000 --> 00:00:16,060
‫Ve grabber bileşenimizde buna nasıl bir işaretçi alabileceğimizi öğreneceğiz.

4
00:00:16,060 --> 00:00:20,800
‫Ayrıca kendimizi yanlışlıkla motoru çökertmekten nasıl koruyabileceğimize de bakacağız.

5
00:00:20,800 --> 00:00:23,380
‫Nasıl olduğunu görelim.

6
00:00:24,280 --> 00:00:29,380
‫Şimdi, bir nesneyi tutabilmek için fizik sistemiyle etkileşime girmemiz gerekiyor.

7
00:00:29,380 --> 00:00:37,090
‫Ve aslında kullanabileceğimiz fizik tutacağı adı verilen bir bileşen var, bu da fiziksel nesneleri yakalamamıza ve onlara dünyada nerede

8
00:00:37,090 --> 00:00:43,090
‫olmak istediğimizi söylememize izin veriyor, ancak bunu fiziksel kısıtlamaları kabul edecek şekilde yapıyor,

9
00:00:43,090 --> 00:00:45,760
‫böylece duvarlardan geçmiyor.

10
00:00:46,180 --> 00:00:53,200
‫Ve nesne, gitmesini söylediğimiz belirli bir noktayı katı bir şekilde takip etmek yerine bir yay üzerindeymiş

11
00:00:53,200 --> 00:00:54,880
‫gibi görünüyor.

12
00:00:55,030 --> 00:00:57,910
‫Bu yüzden bu fizik bileşenlerini kullanacağız.

13
00:00:57,910 --> 00:01:02,230
‫Yakalayıcı ile birlikte gidip oynatıcımız BP'ye ekleyeceğiz.

14
00:01:02,230 --> 00:01:09,790
‫Şimdi bileşenler bölmesinin altındaki ekle düğmesine gidelim ve fizik tutamacını bulup ekleyelim.

15
00:01:09,790 --> 00:01:14,290
‫Ve bunun bir sahne bileşeni değil, bir aktör bileşeni olduğunu görebilirsiniz, çünkü

16
00:01:14,290 --> 00:01:18,460
‫alt bölümde aşağı iner, bu yüzden aslında kendi fiziksel dönüşümü yoktur.

17
00:01:18,460 --> 00:01:23,830
‫Fizik tutamacıyla yaptığımız şey, ona yakalayacağı nesneyi söylemek ve ardından yakaladığımız nesneyi

18
00:01:23,830 --> 00:01:26,170
‫nereye koymasını istediğimizi söylemektir.

19
00:01:26,290 --> 00:01:32,050
‫Dokümantasyona giderseniz, bunu mevcut fonksiyonlarda görebilirsiniz.

20
00:01:32,060 --> 00:01:39,430
‫Fonksiyon bölümünü aşağı kaydırırsanız, konum fonksiyonunda bir serbest bırakma bileşeni ve bir yakalama bileşeni

21
00:01:39,430 --> 00:01:41,320
‫olduğunu görebilirsiniz.

22
00:01:41,320 --> 00:01:45,940
‫Ayrıca belirlenmiş bir hedef konumu ve dönüşü vardır.

23
00:01:45,940 --> 00:01:51,160
‫Burası nesneyi yerleştirmek istediği yerdir, ancak bunu yaparken fiziksel kısıtlamalara

24
00:01:51,160 --> 00:01:56,440
‫saygı gösterecek ve bunu bir yay üzerindeymiş gibi yumuşak bir şekilde yapacaktır.

25
00:01:56,440 --> 00:02:02,440
‫Şimdi, bu fonksiyonları henüz kullanmayacağız, ancak bu bileşeni yakalayıcı bileşenimizde

26
00:02:02,440 --> 00:02:05,470
‫tutmanın bir yolunu bulmamız gerekiyor.

27
00:02:05,590 --> 00:02:07,780
‫Peki bunu nasıl yapacağız?

28
00:02:07,780 --> 00:02:15,310
‫Pekala, hadi CP'mize gidelim ve begin play'e bir göz atalım ve onu ele geçirmeye çalışalım.

29
00:02:15,310 --> 00:02:23,980
‫Artık herhangi bir aktör üzerinde, bir bileşeni türüne göre bulmamızı sağlayan bir işlev var.

30
00:02:23,980 --> 00:02:27,190
‫Ancak fiziksel tutamağın türü nedir?

31
00:02:27,190 --> 00:02:31,180
‫Bu bir fizik kolu bileşenidir.

32
00:02:31,180 --> 00:02:36,670
‫Şimdi, bu türü elde etmek için bir include kullanmamız gerekiyor ve belgelerde include'in physics engine forward

33
00:02:36,670 --> 00:02:40,180
‫slash physics handle components olduğunu görebilirsiniz.

34
00:02:40,180 --> 00:02:46,420
‫Bunu bir CP'ye kopyalayalım ve add draw debug helpers'ın altına ekleyelim.

35
00:02:46,870 --> 00:02:53,470
‫Daha sonra yapacağımız şey, bir işaretçiye sahip olmak için bir get ONA

36
00:02:53,590 --> 00:03:00,370
‫yapmak, ardından bir ok yapmak ve bileşeni sınıfa göre bulmaktır.

37
00:03:00,370 --> 00:03:07,540
‫Şimdi bu fonksiyon, C++'da şablon fonksiyon olarak adlandırılan özel bir fonksiyon türüdür ve bu, derlediğinizde

38
00:03:07,540 --> 00:03:14,410
‫gerçekten değerlendirilecek bazı parametreler aktarabileceğiniz anlamına gelir.

39
00:03:14,410 --> 00:03:19,090
‫Bunu yapmanın yolu da aşağıdaki gibi köşeli parantezler kullanmaktır.

40
00:03:19,090 --> 00:03:25,330
‫Yani fonksiyondan sonra bir köşeli parantez kullanırsınız ve ona bulmasını istediğiniz

41
00:03:25,330 --> 00:03:30,910
‫türü verirsiniz, ki bu bizim durumumuzda you physics handle bileşenidir.

42
00:03:30,970 --> 00:03:33,250
‫Ve sonra köşeli parantezleri kapatırsınız.

43
00:03:33,250 --> 00:03:37,660
‫Ancak bu bir fonksiyon olduğu için, normal parantezler kullanarak da çağırmanız gerekir.

44
00:03:37,660 --> 00:03:41,680
‫Bundan sonra ikinci parantez kümesini koyarsınız.

45
00:03:41,680 --> 00:03:48,640
‫Dolayısıyla, bu derleme zamanı argümanlarının köşeli parantezler kullanılarak aktarıldığını ve ardından çalışma zamanı argümanlarının

46
00:03:48,640 --> 00:03:52,330
‫parantezler kullanılarak aktarıldığını görebilirsiniz.

47
00:03:52,630 --> 00:03:58,900
‫Şimdi, normal bir fonksiyon gibi, bunun da bir geri dönüş değeri olacaktır ve bu durumda geri dönüş değeri

48
00:03:58,900 --> 00:04:01,390
‫buraya aktardığımız tür olacaktır.

49
00:04:01,390 --> 00:04:08,680
‫Ancak bir işaretçi olarak, bir fizik tanıtıcısı bileşen işaretçisini alabilir ve bunun için fizik tanıtıcısı olarak adlandıracağımız

50
00:04:08,680 --> 00:04:16,390
‫bir değişken oluşturabilir ve bunu sınıfa göre bu get owner find bileşenine eşit olarak ayarlayabiliriz.

51
00:04:16,390 --> 00:04:21,910
‫Şimdi bu satırın sonunda bir noktalı virgül olduğunu hatırlayalım ve bu, aynı aktörümüz üzerinde

52
00:04:21,910 --> 00:04:26,110
‫başka bir bileşeni ele geçirmemiz için gereken her şeydir.

53
00:04:26,110 --> 00:04:32,740
‫Şimdi size işaretçilerin tehlikeli olabileceğini söylediğimi hatırlayın çünkü bazen null olabilirler ve

54
00:04:32,740 --> 00:04:34,720
‫bu da bir çökmeye yol açabilir.

55
00:04:34,720 --> 00:04:42,100
‫Aktörümüze bir fizik tutamacı bileşeni koymayı unuttuğumuzu veya yeni bir aktöre bir tutucu koyduğumuzu ve bunu henüz

56
00:04:42,100 --> 00:04:46,180
‫bir fizik tutamacı bileşenine bağlamadığımızı düşünün.

57
00:04:46,180 --> 00:04:52,510
‫Eğer durum buysa, fizik tanıtıcı işaretçisi bir null işaretçisi olacaktır.

58
00:04:52,510 --> 00:04:59,020
‫Ve eğer bu işaretçi üzerinde ok operatörünü veya referans operatörünü kullanmaya çalışırsak, motorumuz çökecektir

59
00:04:59,020 --> 00:05:03,340
‫ve bu çökmenin neye benzediğini görmek bazen gerçekten zor olabilir.

60
00:05:03,340 --> 00:05:10,000
‫Bu yüzden, sadece size göstermek için bu çökmeye neden olacağım ve gelecekte başınıza gelirse

61
00:05:10,000 --> 00:05:15,700
‫bunu fark edebilirsiniz, fizik tanıtıcı işaretçimizi null işaretçisine eşit

62
00:05:15,700 --> 00:05:18,010
‫olarak yeniden atayacağım.

63
00:05:19,060 --> 00:05:20,320
‫Özel anahtar kelime.

64
00:05:20,320 --> 00:05:21,630
‫Hepsi boş.

65
00:05:21,640 --> 00:05:24,550
‫Peter C++'da null pointer bu şekilde yazılır.

66
00:05:24,550 --> 00:05:28,030
‫Sonra sonuna noktalı virgül koyarsınız ve sonra yapacağımız

67
00:05:28,030 --> 00:05:32,410
‫şey fizik, ok tutma, isim alma gibi işlemler yapmaktır.

68
00:05:32,620 --> 00:05:38,200
‫Canlı kodlama kullanarak derlemeye devam edersek ve derleme işlemi tamamlandığında,

69
00:05:38,200 --> 00:05:43,790
‫öncelikle burada replay'de devam eden her şeyi kaydettiğimizden emin olacağız çünkü

70
00:05:43,840 --> 00:05:50,140
‫motoru çökertmek üzereyim ve devam edip play tuşuna basarsam, çökme sonucu bu olacaktır.

71
00:05:50,140 --> 00:05:55,390
‫Muhabir Ve bunu gördüğünüzde unreal'da bir şeylerin yanlış gittiğini düşünebilirsiniz,

72
00:05:55,390 --> 00:05:58,440
‫ancak aslında burada hatalı olan sizin kodunuzdur.

73
00:05:58,450 --> 00:06:06,220
‫Bu çökme raporunda, ilk satırda sorunun iki nokta üst üste, iki nokta üst üste, oynamaya başlamanızdan kaynaklandığını

74
00:06:06,250 --> 00:06:08,230
‫görebilirsiniz.

75
00:06:08,230 --> 00:06:11,760
‫Ve aslında bize 28. satır olan satır numarasını da veriyor.

76
00:06:11,770 --> 00:06:18,490
‫Gördüğünüz gibi, 28. satırın bu noktasında, bir fonksiyonu çağırmak için bu işaretçiye

77
00:06:18,490 --> 00:06:26,080
‫başvurduğumuzda, aslında önce işaretçinin null olup olmadığını kontrol etmeyerek büyük bir hata

78
00:06:26,080 --> 00:06:26,800
‫yaptık.

79
00:06:26,860 --> 00:06:28,330
‫Yapmamız gereken de bu.

80
00:06:28,330 --> 00:06:29,710
‫Ve bunu bir if ifadesiyle yaparız.

81
00:06:29,710 --> 00:06:41,440
‫Temel olarak, eğer fizik tanıtıcısı null işaretçisine eşit değilse, o zaman devam edebilir ve bu fizik tanıtıcısı üzerinde bir şeyler çağırabiliriz, böylece fiziksel tanıtıcıyı

82
00:06:41,440 --> 00:06:46,900
‫koyabiliriz, bu if deyiminin içine isim alabiliriz ve bu bizi korur çünkü bu kod,

83
00:06:46,900 --> 00:06:53,380
‫D referans kodu null işaretçisine sahip olduğumuz durumda yürütülmeyecektir.

84
00:06:53,380 --> 00:06:58,330
‫Şimdi devam edeceğim ve null işaretçiye ayarladığımız 27. satırı kaldıracağım.

85
00:06:58,330 --> 00:07:02,710
‫Ve bileşen adını kendiniz yazdırmanız için size meydan okuyacağım.

86
00:07:02,710 --> 00:07:10,930
‫Bu nedenle, yalnızca gerçek bileşene sahipsek yazdırın, temelde bir null işaretçimiz yok ve bu bileşeni ele geçirmeyi başaramazsak

87
00:07:10,930 --> 00:07:17,230
‫uyarmak için bir else kullanın ve kontrol etmek, videoyu duraklatmak ve denemek için bileşeni kaldırmayı

88
00:07:17,230 --> 00:07:19,180
‫deneyin.

89
00:07:22,290 --> 00:07:22,770
‫Tamam.

90
00:07:22,770 --> 00:07:23,690
‫Tekrar hoş geldiniz.

91
00:07:23,700 --> 00:07:33,600
‫Bu yüzden burada yeni bir günlük mesajı oluşturacağız ve got physics handle colon percent sx diyeceğiz ve U günlüğüne

92
00:07:33,600 --> 00:07:40,200
‫ikinci argüman veya dördüncü argüman olarak kesip yapıştıracağım bu fizik tanıtıcısı

93
00:07:40,200 --> 00:07:43,260
‫adına sahip olacağız.

94
00:07:43,320 --> 00:07:46,950
‫Ve bir yıldız koyacağım çünkü bu bir dize.

95
00:07:46,950 --> 00:07:50,250
‫Şimdi if deyimimizin altına bir else deyimi ekleyelim.

96
00:07:50,250 --> 00:07:55,500
‫Ve buraya başka bir U günlüğü koyacağız, bu sefer bir ekran

97
00:07:55,500 --> 00:08:02,340
‫yerine, sarı renkte çıkacak bir uyarı türü mesaj koyacağız ve Fizik tanıtıcısı

98
00:08:02,640 --> 00:08:07,350
‫bulunamadı, ünlem işareti diyeceğiz.

99
00:08:07,350 --> 00:08:12,960
‫Şimdi editör açık değil, bu yüzden Visual Studio kodu içinde derleme yapmak için bir kontrol kaydırması B yapacağım,

100
00:08:12,960 --> 00:08:17,820
‫başarılı olduğunda terminali kapatacağım ve yeni projeden yeniden başlatacağım.

101
00:08:17,820 --> 00:08:25,440
‫Bu başlatıldıktan sonra, devam edelim ve oynat düğmesine basalım, çıktı günlüğünü açalım ve günlük mesajını görelim.

102
00:08:25,440 --> 00:08:28,440
‫İsmin hangi fizik kolu olduğunu buldum.

103
00:08:28,440 --> 00:08:29,790
‫Tuhaf bir şekilde, fizik kolu.

104
00:08:29,970 --> 00:08:39,510
‫Şimdi bip sesi oynatıcımıza gidip o fizik tutamacını silsek ve devam edip oynatsak

105
00:08:39,510 --> 00:08:41,160
‫ne olur?

106
00:08:41,160 --> 00:08:48,000
‫Şimdi çıktı günlüğümüze bir göz atın, fizik tanıtıcısı bulunamadığına dair sarı bir uyarı

107
00:08:48,000 --> 00:08:48,840
‫alıyoruz.

108
00:08:48,840 --> 00:08:50,040
‫O zaman oyunu durduralım.

109
00:08:50,070 --> 00:08:55,860
‫Devam edelim ve fizik tutamacını geri ekleyelim çünkü bunu isteyeceğiz ve oyuncuyu kaydedeceğiz.

110
00:08:55,860 --> 00:08:57,090
‫Bip, harika.

111
00:08:57,090 --> 00:09:03,570
‫Böylece bir bileşenin içinden diğer bileşenleri nasıl ele geçirebileceğimizi anladık ve null işaretçilerle

112
00:09:03,570 --> 00:09:08,820
‫nasıl başa çıkacağımızı ve neden dikkatli olmamız gerektiğini öğrendik.

113
00:09:08,850 --> 00:09:10,500
‫Bir sonraki derste görüşürüz.

