﻿1
00:00:04,610 --> 00:00:05,450
‫Merhaba ve hoş geldiniz.

2
00:00:05,450 --> 00:00:10,790
‫Bu derste, sağlık sistemimizi animasyon planına bağlayacağız, böylece bu

3
00:00:10,790 --> 00:00:13,730
‫karakteri ölene kadar çekebileceğim.

4
00:00:13,730 --> 00:00:15,680
‫İçeri dalalım ve nasıl çalıştığını görelim.

5
00:00:16,520 --> 00:00:22,820
‫Bu yüzden animasyon planındaki bu boolean'ın oyunumuzdan otomatik olarak ayarlanmasını istiyoruz.

6
00:00:23,090 --> 00:00:29,300
‫Olay grafiğimize gidip bunun şu anda nasıl çalıştığına bakarsak, bunun gibi get velocity, get active,

7
00:00:29,300 --> 00:00:34,460
‫transform gibi diğer özellikler, piyona gidiyoruz ve animasyonumuzu her güncellemek

8
00:00:34,460 --> 00:00:38,480
‫istediğimizde üzerinde bir get fonksiyonu yapıyoruz.

9
00:00:38,750 --> 00:00:43,970
‫Bu yüzden, oyuncumuzun ölü olup olmadığını öğreneceğimiz bu modeli takip etmek

10
00:00:43,970 --> 00:00:45,180
‫istiyoruz.

11
00:00:45,200 --> 00:00:52,400
‫Bunu yapmak için, C++'ımızdan bazı işlevleri, çağrılabilir bazı işlevleri ortaya çıkarmamız gerekir.

12
00:00:52,520 --> 00:00:57,140
‫Şimdi C++'ya gidelim ve orada neler olduğuna bir göz atalım.

13
00:00:57,140 --> 00:01:02,540
‫Yani herkese açık bir işlev oluşturabiliriz, ancak bu onu mutlaka erişilebilir kılmaz.

14
00:01:03,050 --> 00:01:10,040
‫Erişilebilirliği sağlamak için, blueprint'i görünür kılan ve başlık araç sistemini açan bir U fonksiyonuna sahip olmamız

15
00:01:10,040 --> 00:01:11,030
‫gerekir.

16
00:01:11,030 --> 00:01:15,080
‫Ancak bunu sadece bir işlev olarak görmekten bir adım öteye gitmeliyiz.

17
00:01:15,080 --> 00:01:20,150
‫Bu yüzden you fonksiyon makrosu ile başlıyoruz, ancak bunu blueprint çağrılabilir hale getirmek istiyoruz.

18
00:01:20,150 --> 00:01:23,180
‫Yani blueprint callable kullanabileceğimiz seçenek budur.

19
00:01:23,990 --> 00:01:30,170
‫Bununla birlikte, Blueprint'i geçersiz kılan veya daha ziyade blueprint'in çağrılabilir olduğunu ima eden ve blueprint

20
00:01:30,170 --> 00:01:32,460
‫pure olan başka bir seçenek daha vardır.

21
00:01:32,480 --> 00:01:36,830
‫Şimdi blueprint pure ile Blueprint callable arasındaki farkı birazdan göreceğiz.

22
00:01:36,830 --> 00:01:43,430
‫Ancak Blueprint Pure kullanıyorsanız, Blueprint Callable ile aynı şeyi yaptığını ve daha fazlasını yaptığını bilin.

23
00:01:43,430 --> 00:01:45,650
‫Yani Blueprint çağrılabilirden biraz daha fazlasını yapıyor.

24
00:01:46,070 --> 00:01:50,660
‫Ve sonra istediğimiz şey, bu karakterin ölü olup olmadığını söyleyen Boolean döndüren

25
00:01:50,660 --> 00:01:51,410
‫bir işlevdir.

26
00:01:52,290 --> 00:01:54,440
‫Bunu bilmek bizim için faydalı olacaktır.

27
00:01:54,450 --> 00:01:58,740
‫Ve son olarak, bunun bir konser üye fonksiyonu olmasını istiyoruz.

28
00:01:58,770 --> 00:02:00,810
‫Şimdi, neden konser olmak istiyor?

29
00:02:00,810 --> 00:02:08,040
‫Çünkü bu fonksiyonu çağırdığımızda, atıcımızın herhangi bir durumunu karakter olarak değiştirmesini beklemiyoruz.

30
00:02:08,040 --> 00:02:12,030
‫Dolayısıyla bunun bir konser işlevi olması gerektiğini rahatlıkla söyleyebiliriz.

31
00:02:12,150 --> 00:02:19,800
‫Aslında concert ve blueprint pure genellikle birlikte kullanılır çünkü blueprint pure, herhangi bir blueprint'e

32
00:02:19,800 --> 00:02:24,330
‫girdiğimizde bazı saf düğümlere bakabileceğimiz anlamına gelir.

33
00:02:24,330 --> 00:02:26,130
‫Buradakini dönüştürün.

34
00:02:26,130 --> 00:02:27,030
‫Bu saf bir düğüm.

35
00:02:27,030 --> 00:02:30,720
‫Get velocity saf bir düğümdür set speed saf bir düğüm değildir.

36
00:02:30,720 --> 00:02:33,330
‫Bunları birbirine bağlayan şeyin ne olabileceğini görebiliyor musunuz?

37
00:02:33,330 --> 00:02:37,380
‫Bunları saf olmayan ve bunu saf yapan şey nedir?

38
00:02:37,410 --> 00:02:40,800
‫Genel olarak konuşmak gerekirse, bir infaz iğnesi olduğu gerçeği.

39
00:02:40,800 --> 00:02:44,970
‫Saf bir düğüm, yürütme pimi olmayan bir düğümdür.

40
00:02:44,970 --> 00:02:51,330
‫Ve genellikle bir şeyin, çağırdığı şey üzerinde herhangi bir etkisi olmadığında, yalnızca sonucu üzerinde bir yürütme

41
00:02:51,330 --> 00:02:54,210
‫iğnesine sahip olmadığını söylemek güvenlidir.

42
00:02:54,270 --> 00:03:00,330
‫Esasen bu, bu fonksiyonu kaç kez çağırırsak çağıralım, her zaman aynı sonucu vereceği

43
00:03:00,330 --> 00:03:01,620
‫anlamına gelir.

44
00:03:01,620 --> 00:03:05,160
‫Program üzerinde her zaman aynı etkiyi yaratacaktır.

45
00:03:05,160 --> 00:03:06,720
‫Saf bir fonksiyon olarak.

46
00:03:06,720 --> 00:03:09,240
‫Çağrıldığında hiçbir şeyi değiştirmez.

47
00:03:09,240 --> 00:03:14,670
‫Yani sabit ile aynı şeydir, ancak biraz daha güçlüdür çünkü söylediği şey sadece burada atıcı karakterde

48
00:03:14,670 --> 00:03:20,250
‫hiçbir şeyi değiştirmediği değil, aynı zamanda küresel hiçbir şeyi, herhangi bir yerdeki herhangi bir

49
00:03:20,250 --> 00:03:22,020
‫durumu değiştirmediğidir.

50
00:03:22,020 --> 00:03:22,890
‫Nokta.

51
00:03:22,890 --> 00:03:28,980
‫Tek girdi, sahip olduğu tek etki ürettiği çıktılardır.

52
00:03:29,580 --> 00:03:32,340
‫İşte bu yüzden bu planı saf hale getirmeyi seçiyoruz.

53
00:03:32,340 --> 00:03:37,170
‫Bir yürütme pimine olan ihtiyacı ortadan kaldırır, bu da planlarda çok daha güzel olmasını sağlar.

54
00:03:37,170 --> 00:03:43,170
‫Ayrıca bu fonksiyonu çağırdığımızda oyunumuzun durumunda herhangi bir değişiklik yapmadığımız gerçeğini

55
00:03:43,170 --> 00:03:44,340
‫de ifade eder.

56
00:03:44,520 --> 00:03:48,660
‫Öyleyse devam edelim ve bunun için bir uygulama oluşturmaya çalışalım.

57
00:03:48,660 --> 00:03:54,180
‫Aslında, uygulamayı bir meydan okuma olarak size bırakacağım ve bunu bir animasyon

58
00:03:54,180 --> 00:04:00,060
‫grafiğine, pardon, animasyon planının bir olay grafiğine bağlayacağız.

59
00:04:00,210 --> 00:04:03,810
‫Bu yüzden burada yeni bir set oluşturarak bunu yapacağız.

60
00:04:03,810 --> 00:04:12,720
‫Sonunda is dead boolean değişkenini ayarlamak istiyoruz ve piyon sahibini almak istiyoruz ve bunu döküm yapmak istiyoruz

61
00:04:12,720 --> 00:04:18,660
‫çünkü bu is dead özelliğine sahip olmak için bir atıcı karakter olması gerekiyor.

62
00:04:18,660 --> 00:04:23,430
‫Bu yüzden onu C++ atıcı karakterlerine atamak istiyoruz çünkü bunun kesinlikle

63
00:04:23,430 --> 00:04:28,260
‫bir blueprint versiyonu olduğunu söyleyecek kadar aşağı inmeme gerek yok çünkü

64
00:04:28,530 --> 00:04:31,650
‫bu yeni fonksiyon aslında C++ seviyesinde var.

65
00:04:31,650 --> 00:04:33,510
‫O yüzden devam edip atışı yapacağız.

66
00:04:33,510 --> 00:04:36,930
‫Eğer dökümde başarılı olursak, is dead özelliğini ayarlayacağız.

67
00:04:37,110 --> 00:04:42,690
‫Planımızı biraz daha güzel bir görünüme kavuşturmak için buraya bazı yönlendirme düğümleri koymama

68
00:04:42,690 --> 00:04:43,650
‫izin verin.

69
00:04:44,070 --> 00:04:47,610
‫Ve sonra yapmak istediğimiz şey bu atıcı karakter referansını kullanmaktır.

70
00:04:47,610 --> 00:04:52,980
‫Şimdi onu bir atıcı karaktere atadığımıza göre, bu ölü özelliğine sahip olması gerektiğini biliyoruz.

71
00:04:52,980 --> 00:04:54,900
‫Yani bunu yapabilmeliyiz.

72
00:04:55,080 --> 00:05:00,180
‫Derledikten ve çalıştırdıktan sonra, this is dead özelliğini alabilir ve buraya ayarlayabilirsiniz.

73
00:05:01,080 --> 00:05:04,860
‫Şimdi ölüp ölmediğimizi hesaplamak için meydan okuma zamanı.

74
00:05:04,860 --> 00:05:08,220
‫Bu yüzden is dead fonksiyonumuzdan doğru boolean değerini döndürün.

75
00:05:08,220 --> 00:05:09,180
‫Bu ilk adım.

76
00:05:09,180 --> 00:05:15,750
‫Bunun için sağlık değişkenimizle bazı eşitsizlikler kullanmak ve ardından değişkenimizi bağlamak isteyebilirsiniz.

77
00:05:15,750 --> 00:05:20,310
‫Animasyon planındaki ölü ölüdür değişkeni bunu yapmaya çok az kaldı.

78
00:05:20,310 --> 00:05:23,490
‫Bunu yapmaktan sadece bir derleme uzakta olmamız gerekiyordu.

79
00:05:23,490 --> 00:05:26,280
‫Videoyu duraklatın ve bunu halledin.

80
00:05:27,520 --> 00:05:27,790
‫Tamam.

81
00:05:27,790 --> 00:05:28,340
‫Tekrar hoş geldiniz.

82
00:05:28,360 --> 00:05:31,840
‫Öncelikle koda geçelim.

83
00:05:31,840 --> 00:05:36,730
‫Yani bu oldukça basit bir şekilde, boolean döndüren bir ifade döndüreceğim.

84
00:05:36,730 --> 00:05:43,450
‫Yani şunu söylemek istiyoruz: Sağlık sıfırdan küçük mü yoksa sıfıra eşit mi, bu durumda gerçekten ölmüş oluyor muyuz?

85
00:05:43,510 --> 00:05:47,710
‫Bir işlevin ifadesi ancak bu kadar basit olabilir.

86
00:05:47,710 --> 00:05:49,990
‫Öyleyse devam edelim ve bunu inşa edelim.

87
00:05:50,680 --> 00:05:55,600
‫Ve bu derlendikten sonra, Unreal'a gidebilir ve onu bağlayabiliriz.

88
00:05:55,600 --> 00:06:02,020
‫Bu yüzden as shooter'ı karaktere sürükleyerek, burada bir shooter karakter referansına sahip olacağız, bu yüzden

89
00:06:02,020 --> 00:06:09,550
‫yapmak istediğimiz is dead bize bu is dead fonksiyonunu verir, saf olduğu için yürütme pimi olmadığını görebilirsiniz.

90
00:06:09,580 --> 00:06:15,010
‫Sonra bu boolean'ı buradan alıp is dead değişkenimize bağlarız.

91
00:06:15,130 --> 00:06:21,340
‫Ve şimdi devam edip oynarsak, aslında dünyadaki o karakteri öldürebilmeliyiz.

92
00:06:21,340 --> 00:06:24,190
‫Sağlığı sıfıra inene kadar ona ateş edeceğiz.

93
00:06:24,190 --> 00:06:25,300
‫Ve işte oldu.

94
00:06:25,300 --> 00:06:28,780
‫Animasyon onu başarıyla öldürdü.

