Üst Öğe: learn-game-mechanics-in-unreal-editor-for-fortnite Order: Type: tutorial Tags: verse Tags: cihazlar Hero-image: transitioning-point-of-view-hero.png Topic-image: transitioning-point-of-view-topic.png Social-image: transitioning-point-of-view-social.png
Kameralar bir oyunun görünüm ve hissiyatında önemli bir rol oynar. Üçüncü şahıs kameraları oyunculara daha geniş bir alan hissi verirken, birinci şahıs kameraları oyunculara oyun dünyalarına daha yakından bakma imkanı verir. Oyun sırasında kamera değiştirmek farklı duygular uyandırabilir ve birden fazla kamera arasında geçiş yapmak yaşadığın deneyime önemli bir çeşitlilik katabilir. Örneğin, yandan kaydırmalı bir bölüm oluşturmak için sabit bir kamera kullanarak eğlenceli bir platform mücadelesi oluşturabilirsin.
UEFN’de kamera değişikliklerini yönetmek için Verse’ü kullanabilirsin. Olayları dinlemek için cihazları kullanarak, olay tetiklendiğinde görünümlerini değiştirmek için bir oynatıcıya bir kamera ekleyebilirsin. Bu örnekte, bir Yörünge Kamerası eklersin sinematik sonunda bir oyuncuya verilecek cihaz. Birinci şahıs görünümünü simüle etmek için bir yörünge kamerasının ayarlarını değiştirebilir ve kamerayı bir sinematik görüntünün sonuna ekleyerek üçüncü şahıstan birinci şahsa yumuşak bir geçiş oluşturabilirsin. Daha fazla oynanış için, bu örnekte oyuncu bir silah alır ve sinematiği tetiklemek için kapıya doğru sallar. Bu örneği kendi ihtiyaçlarına göre uyarlayabilirsin; örneğin bir oyuncunun arızalı bir gemi kapısını onarmak için İngiliz anahtarı sallaması veya bir kayayı parçalayıp gizli bir alanı ortaya çıkarmak için çekiç sallaması gibi. Ayrıca bu kavramları daha geniş bir şekilde uygulayarak yeni bir bölgeye girerken geniş bir çekim yapmak, oyuncunun bir bulmacayı çözmesi gerektiğinde yukarıdan aşağıya bir görünüme geçmek veya ürkütücü bir korku deneyiminde birinci şahıs görünümü gibi harika oyun anları yaratabilirsin.
Bir oyuncu bir kapıyı açtığında sinematik bir sekans kullanarak üçüncü şahıstan birinci şahsa geçiş yapan bir Verse cihazının nasıl oluşturulacağını öğrenmek için bu eğitim videosunu izle.
Bu örnekte aşağıdaki dil özellikleri kullanılıyor:
-
Sınıf: Bu örnek, bir oyuncu bir kapıyı açtığında bir sinematiği etkinleştiren bir Verse sınıfı oluşturur.
-
Seçenek: Abone olunabilen olayları seçenek değişkenlerinde saklayabilir ve bu olaylara olan abonelikleri daha sonra iptal edebilirsin.
Bu örnek aşağıdaki API’leri kullanır:
- Abone Olunabilir: Bir oyuncunun kapının yanındaki bir bölgeye girdiğini anlamak için olaylara abone olursun ve oyunculara bir düğmeyle etkileşime girdiklerinde bir eşya verirsin.
Bölümü Ayarlama
Bu örnekte aşağıdaki cihazlar kullanılır:
-
1 x Düğme cihazı: Oyuncu düğmeyle etkileşime girdiğinde, eşya verici cihazdan bir kılıç alırlar.
-
1 x Eşya Verici cihaz: Eşya verici, oyuncuya kapıdan geçmesi için gereken kılıcı verir.
-
1 x Koşullu Düğme cihazı: Gerekli silah, koşullu düğmenin Anahtar Öğesi olarak ayarlanır, böylece oyuncu gerekli kılıca sahip olmadığı sürece kapıdan geçemez.
-
1 x Girdi Tetikleyicisi cihazı: Bu, oyuncu ateş girişi eylemini dinleyerek saldırdığında kapıyı açar. Bu yalnızca oyuncu bölge cihazının içindeyken, oyuncu kılıca sahipse ve kapı zaten açık değilse gerçekleşir.
-
1 x Bölge cihazı: Kapıyı açmak amacıyla kılıçla herhangi bir saldırının tetiklenmesini istemediğin için, bölge cihazı oyuncunun kapıyı açmak için kapının hemen yanında olması gerektiğinden emin olur.
-
1 x [Sinematik Sekans cihazları] (cinematic-sequence-device-in-unreal-editor-for-fortnite): Üçüncü şahıstan birinci şahsa yumuşak bir geçiş oluşturmak için, kapının açıldığını gösteren bir sinematik oynatırsın ve kamerayı oyuncunun birinci şahıs bakış açısıyla aynı hizaya getirirsin.
-
1 x Yörünge Kamerası cihazı: Oyuncu için birinci şahıs görüşü oluşturmak için, birinci şahıs bakış açısını taklit etmek üzere karakterin göğsünün içine yerleştirilmiş bir yörünge kamerası kullanırsın. Bu görünüm değişikliği yalnızca oyuncu kapıyı açtığında sinematik oyunculardan sonra gerçekleşir.
-
1 x Kilit cihazı: Bu, oyuncunun gerekli silaha sahip olmadan önce kapıyı açmasını önlemek için kapıyı kilitli tutar.
-
1 x Harita Göstergesi cihazı: Bu, oyuncu silahı eline aldığında mini haritada kapının yerini gösterir.
Bölümünü ayarlamak için şu adımları izle:
Eşya Verici ve Düğme
Oyuncuya kapıyı açmak için ihtiyaç duyduğu silahı vermek için bir eşya vericisi ve bir düğme cihazı kullanırsın. Oyuncu butonla etkileşime girdiğinde, eşya vericisi ona silah verir. Bu öğeleri eklemek için aşağıdaki adımları izle:
-
Bölümüne bir Eşya Verici cihazı ekle.
-
Anahat Düzenleyicisine bir adet eşya vericisi ekle. Ayrıntılar panelinde, Kullanıcı Seçenekleri altında değerleri aşağıdakilere ayarla:
Seçenek Değer Açıklama Eşya Tanımı Kılıç Bu oyuncunun kapıyı açmak için kullandığı silahtır. Verilen Cihazı Kuşan True Bu örnekte, oyuncu silahı alır ve hemen kuşanır. Büyütmek için görsele tıkla.
-
Bölümüne bir Düğme cihazı ekle.
-
Anahat Düzenleyicisinde düğmeyi seç. Ayrıntılar panelinde, Kullanıcı Seçenekleri altında değerleri aşağıdakilere ayarla:
Seçenek Değer Açıklama Etkileşim Metni Al Bu, oyuncuya düğmeyle etkileşime girmesini bildiren metindir. Kaç Kez Tetiklenebilir 1 Bu örnekte, oyuncu silahı yalnızca bir kez alabilir. Büyütmek için görsele tıkla.
Girdi Tetikleyicisi
Bir oyuncunun bir silahı ne zaman salladığını anlamak için, belirli bir eylemi dinleyen bir girdi tetikleyicisi kullanabilirsin. Bir oyuncu silahı salladığında, girdi tetiği etkinleşir. Bir girdi tetikleyicisi eklemek için aşağıdaki adımları izle:
-
Bölümüne bir Girdi Tetikleyicisi cihazı ekle.
-
Anahat Düzenleyicisinde girdi tetikleyicisini seç. Ayrıntılar panelinde, Kullanıcı Seçenekleri altında değerleri aşağıdakilere ayarla:
Seçenek Değer Açıklama Girdi Türü Standart Eylem Ateş girdi tetikleyicisinin bir oyuncunun silahı ne zaman salladığını anlamak için dinlemesi gereken bir Standart Eylemdir. Standart Girdi Ateş Ateş, bir oyuncunun silahını ne zaman salladığını anlamak için girdi tetikleyicisinin dinlemesi gereken eylemdir. Gösterge Panelinde Göster False Bu eylemi Gösterge Paneli üzerinde göstermene gerek yok. Büyütmek için görsele tıkla.
Bölge
Bir oyuncunun kapıyı açmak için kapının yanında olması gerektiğinden emin olmak için, oyuncunun içeride olup olmadığını kontrol etmek amacıyla kapının yanında bir bölge cihazı kullanabilirsin. Bir bölge cihazı eklemek için aşağıdaki adımları izle
-
Bölümünde bir yerlere bir kapı ekle. Bu, oyuncunun silahı kullanarak açtığı kapıdır.
-
Bölümüne bir Bölge cihazı ekle. Bu ses cihazının kapının önündeki küçük bir alanla veya senin oyuncunun saldırmasını istediğin alanla çakışması gerekir.
-
Sana ait oyuncuyu, saldırırken içinde olmasını istediğin alana sığdırmak için bölge cihazının boyutunu dönüşümünü değişime uğratarak değiştir. Girdi tetikleyicisi yalnızca oynatıcı bu birimin içindeyken ateş olayını dinler, bu nedenle kendi deneyim ihtiyaçlarına uygun olduğundan emin ol.
Büyütmek için görsele tıkla.
Kilit
Bir oyuncunun silahı almadan önce kapıyı açamayacağından emin olmak için, bir kilit cihazı kullanarak kapıyı kilitleyebilirsin. Bir kilit cihazı eklemek için aşağıdaki adımları izle:
-
Kapına takılı bir Kilit cihazı ekle.
-
Anahat Düzenleyicisinde kilit öğesini seç. Ayrıntılar panelinde Kullanıcı Seçenekleri altında Oyun içinde Görünür seçeneğini false olarak ayarla.
Büyütmek için görsele tıkla.
Harita Göstergesi
Bir oyuncunun ulaşması gereken yer, silahı aldığı yerden çok uzakta olduğunda, oyunculara bir harita göstergesi kullanarak nereye gideceklerini göstermek yararlı olur. Bu, haritalarında ve mini haritalarında bir görüntü gösterir ve oyuncuları doğrudan kapıya yönlendiren bir hedef darbesini etkinleştirebilir. Bir harita göstergesi eklemek için aşağıdaki adımları izle:
-
Bölümüne, kapının altına gizlenmiş bir Harita Göstergesi cihazı ekle.
-
Anahat Düzenleyicisinde harita göstergesini seç. Ayrıntılar panelinde Kullanıcı Seçenekleri öğesinin altında:
Seçenek Değer Açıklama Oyun Başladığında Etkin false Harita göstergesi yalnızca oyuncu silahı eline aldıktan sonra etkinleşir. Küçük Simge Bir Simge Seç Mini haritada gösterilmesini istediğin bir simge seç. Büyük Simge Bir Simge Seç Haritada gösterilmesini istediğin bir simge seç. Büyütmek için görsele tıkla.
Koşullu Eşya Düğmesi
Bir oyuncunun kapıyı açmak için ihtiyaç duyduğu doğru silahı salladığından emin olmak için, sallarken tuttukları silahı kontrol etmek için koşullu bir eşya düğmesi kullanabilirsin. Bir koşullu eşya düğmesi eklemek için bu adımları izle:
-
Bölümüne bir Koşullu Eşya Düğmesi ekle.
-
Anahat Düzenleyicisinde koşullu eşya düğmesini seç. Ayrıntılar panelinde, Kullanıcı Seçenekleri altında değerleri aşağıdakilere ayarla:
Seçenek Değer Açıklama Anahtar Öğeleri Tüket False Oyuncu kapıyı açtığında silahını tüketmek istemezsin. Anahtar Eşya 1 Eşya Açıklaması Silah Bu, oyuncunun kapıyı açmak için ihtiyaç duyduğu silahtır. Büyütmek için görsele tıkla.
Yörünge Kamerası
Birinci şahıs görüş açısını simüle etmek amacıyla oyuncunun perspektifini değiştirmek için bir yörünge kamerası kullanabilirsin. Bir yörünge kamerası eklemek için aşağıdaki adımları izle:
-
Bölümüne bir Kamera: Yörünge cihazı ekle.
-
Anahat Düzenleyicisinde yörünge kamerası düğmesini seç. Ayrıntılar panelinde, Kamera altında değerleri aşağıdakilere ayarla:
Seçenek Değer Açıklama Mesafe 0.0 cm Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler Ofset X 27.0 cm Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler *Ofset Y 0.0 cm Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler *Ofset Z 76.0 cm Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler Yatay Hız 0.0 cm/s Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler -
Ayrıntılar panelinde, Geçiş altında değerleri aşağıdakilere ayarla:
Seçenek Değer Açıklama Geçiş Giriş Süresi 0.0 s Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler Geçiş Çıkış Süresi 0.1 s Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler Geçiş Çıkış Türü Yavaşlayan Geçiş Birinci şahıs görüş açısı için ihtiyaç duyulan parametreler Büyütmek için görsele tıkla.
Sinematik Sekans
Kapıyı açarken bir sinematik tetiklemek için, onu oynatacak bir sinematik sekans cihazına ihtiyacın vardır. Bir si̇nemati̇k sekans eklemek için aşağıdaki adımları izle:
-
Bölümüne bir Sinematik Sekans cihazı ekle.
-
İçerik Tarayıcısında bölümünde kullanmak istediğin bir si̇nemati̇k sekans oluştur. Sinematik sekans, daha önce ayarladığın yörünge kamerasını kullanır ve kamerayı başlangıç açısından birinci şahıs görünümüne geçirirken kapının açılışını göstermelidir. Kendi sinematik sekanslarını oluşturma hakkında daha fazla bilgi için Sinematikleri ve Ara Sahneler sayfasına göz at.
-
Anahat Düzenleyicisinde, sinematik sekansı seç. Ayrıntılar panelinde Kullanıcı Seçenekleri öğesinin altında Sekansı sinematik sekansına ata.
Büyütmek için görsele tıkla.
Verse’ün Kullanılmasıyla Oluşturulan Kapı Açılıyor Sinematiği
Bir sinematik oynatma ve kapıyı açma mantığını yönetmek için bir Verse cihazı kullanırsın. Cihaz, ses cihazının içinde silahını sallayan bir oyuncuyu dinler, ardından sinematik bir sekans oynatır, kapıyı açar ve oyuncuyu birinci şahsa geçirir.
Alanları Kurma
Verse cihazını oluşturmak için:
-
Verse Explorer kullanarak yeni bir Verse cihazı oluştur ve ”door_open_cinematic_manager” olarak adlandır.
-
”door_open_cinematic_manager” sınıf tanımının üzerine, bu cihaza özel mesajlar yazdırmak için bir günlük kanalı ekle. Ardından, günlük kanalıyla birlikte kullanmak için sınıf tanımına bir günlük kaydedici ekle.
door_open_channel := class(log_channel){} # Bir bölüme yerleştirilebilen, Verse ile yazılmış bir Kreatif cihazı door_open_cinematic_manager := class(creative_device): Logger:log = log{Channel := door_open_channel}
-
Aşağıdaki alanları ”door_open_cinematic_manager” sınıf tanımına ekle:
-
”DoorVolume” olarak adlandırılmış düzenlenebilir bir Bölge cihazı. Bu, kapıyı açmak için oyuncunun içeride olması gereken bölgedir.
# Kapıyı açmak için oyuncunun içeride olması gereken bölgedir. @editable DoorVolume:volume_device = volume_device{}
-
”FireTrigger” olarak adlandırılmış düzenlenebilir bir Girdi Tetikleyicisi. Bu, ”DoorVolume” içindeyken silahını kullanan oyuncuyu dinler.
# Oyuncunun silahını sallamasını dinleyen girdi tetikleyicisi # DoorVolume içindeyken. @editable FireTrigger:input_trigger_device = input_trigger_device{}
-
”ConditionalButton” adında düzenlenebilir bir Koşullu Düğme cihazı. Bu, oyuncunun bölge cihazının içindeyken doğru silahı kuşanıp kuşanmadığını kontrol eder.
# Oyuncunun doğru silaha sahip olup olmadığını kontrol eden Koşullu Eşya Düğmesi. @editable ConditionalButton:conditional_button_device = conditional_button_device{}
-
”DoorLock” olarak adlandırılmış düzenlenebilir bir Kilit Cihazı. Bu, oyuncunun doğru silaha sahip olmaması durumunda kapıyı kilitli tutar.
# Kapının açılmasını engelleyen kilit cihazı. @editable Door:lock_device = lock_device{}
-
”CinematicSequence” olarak adlandırılmış düzenlenebilir bir Sinematik Sekans cihazı. Bu, kapıyı açarken kamera geçişine yönlendirilen sinematiği oynatır.
# Kapıyı açarken sinematiği oynatan bir sinematik sekans cihazı. @editable CinematicSequence:cinematic_sequence_device = cinematic_sequence_device{}
-
”ObjectiveMarker” adlı düzenlenebilir bir Harita Göstergesi cihazı. Bu, silahı alındıktan sonra mini haritada kapının yerini gösterir.
# Kapının konumunu gösteren harita göstergesi cihazı. @editable ObjectiveMarker:map_indicator_device = map_indicator_device{}
-
”ItemGranter” adlı düzenlenebilir bir Eşya Verici cihazı. Oyuncuya ilerlemek için ihtiyaç duyduğu silahı verir.
# Oyuncuya ihtiyaç duyduğu silahı veren eşya verici cihazı. @editable ItemGranter:item_granter_device = item_granter_device{}
-
”ItemGrantButton” adlı düzenlenebilir bir Buton cihazı. Bu, oyuncuya ihtiyaç duyduğu silahı vermek için ”ItemGranter” öğesini etkinleştirir.
# ItemGranter vericisini etkinleştiren buton. @editable ItemGrantButton:button_device = button_device{}
-
”FPSCamera” adlı düzenlenebilir bir Yörünge Kamerası cihazı. Bu, birinci şahıs görüşünü simüle eder ve sinematik bittikten sonra oyuncuya eklenir.
# Birinci şahıs görüşünü simüle eden yörünge kamerası. @editable FPSCamera:gameplay_camera_orbit_device = gameplay_camera_orbit_device{}
-
”IsDoorOpen” adlı bir ”mantık” değişkeni. Bu alan kapının zaten açık olup olmadığını izler, bu nedenle açıksa sekans oynatılmaz.
# Kapının zaten açık olup olmadığını izleyen bir değişken. var IsDoorOpen:logic = false
-
”FireSubscription” adlı bir * ”seçenek” ”iptal edilebilir” değişken. Bu, aboneliği ”FireTrigger” ”PressedEvent” öğesine saklar. Si̇nemati̇k sekans yalnızca oyuncu kapının hemen yanında olduğunda tetiklemelidir. Bu iptal edilebilir abonelik, çok uzaklaşırlarsa oyuncunun ”FireTrigger” kaydını ”Silmeyi” sağlar.
# İptal edilebilir FireTrigger cihazı aboneliği. var FireSubscription:?cancelable = false
-
Sinematiği Oynatma
Kapı açıldığında, kapının açıldığını gösteren ve oyuncuların görüşünü üçüncü şahıstan birinci şahsa geçiren bir sinematik oluşur. Bir oyuncu kapıyı açtığında sinematiğini etkinleştirmek için aşağıdaki adımları izle.
-
”door_open_cinematic_manager” sınıf tanımına yeni bir ”PlayCinematic()” yöntemi ekle. ”door_open_cinematic_manager” sınıf tanımına yeni bir ”PlayCinematic()” yöntemi ekle. Bu fonksiyon kapıyı açan oyuncuyu alır. Daha sonra sinematiği oynatır ve Kilit cihazını kullanarak kapıyı açar.
# Sinematiği oynatır ve kapının kilidini açar. PlayCinematic(Agent:agent):void=
-
”PlayCinematic()” içinde ilk olarak ”CinematicSequence” öğesinden sinematik sekansını oynat, daha sonra kapının kilidini aç ve kapıyı açarken sırasıyla ”Kilidi Aç()” ve ”Aç()” öğelerini kullan.
# Sinematiği oynatır ve kapının kilidini açar. PlayCinematic(Agent:agent)<suspends>:void= Logger.Print(”Oyuncu eşyayı tutuyor, sinematiği oynatıyor...") CinematicSequence.Play() # Kapının kilidini aç ve ardından kapıyı aç. Door.Unlock(Agent) Door.Open(Agent) IsDoorOpen = true olarak ayarla
-
Son olarak, ”AddTo()” kullanarak yörünge kamerasını ekleyerek oyuncunun görüşünü üçüncü şahıstan birinci şahsa değiştir, ardından Hedef İşaretini devre dışı bırak. Tamamlanmış ”PlayCinematic()” fonksiyonun şu şekilde görünmeli:
# Sinematiği oynatır ve kapının kilidini açar. PlayCinematic(Agent:agent)<suspends>:void= Logger.Print(”Oyuncu eşyayı tutuyor, sinematiği oynatıyor...") CinematicSequence.Play() # Kapının kilidini aç ve ardından kapıyı aç. Door.Unlock(Agent) Door.Open(Agent) IsDoorOpen = true olarak ayarla # Birinci şahıs kamerasını aracıya ekle. Sinematik bittiğinde, # aracı birinci şahıs görüş açısına sahip olur. FPSCamera.AddTo(Agent) Logger.Print(”Kamera değişti") # Hedef İşareti Devre Dışı Bırak ObjectiveMarker.Disable()
-
Sinematik yalnızca oyuncu gerekli eşyayı tutarken oynatılmalı ve kapı zaten açıldıktan sonra tekrar oynatılmamalıdır. Bu mantığı yönetmek için ”door_open_cinematic_manager” sınıf tanımına yeni bir ”CheckCinematic()” yöntemi ekle. Bu fonksiyon ”DoorVolume” içindeki oyuncuyu alır ve gerekli eşyalara sahip olup olmadığını kontrol eder.
# Oyuncunun gerekli eşyaya sahip olduğundan ve kapının açık olmadığından emin ol. CheckCinematic(Agent:agent):void=
-
”CheckCinematic()” kısmında ”IsHoldingItem[]” kullanarak oyuncunun ”ConditionalButton” üzerinde kayıtlı eşyayı tuttuğundan ve kapının kilidinin açılmadığından emin olmak için ”IsDoorOpen” değerinin false olarak ayarlandığından emin ol. Bu koşulları doğruladıktan sonra kapıyı açan oyuncuyu geçirerek ”PlayCinematic()” fonksiyonunu ”spawn{}” ile çağır. Tamamlanmış ”CheckCinematic()” fonksiyonu şu şekilde görünmeli:
# Oyuncunun gerekli eşyaya sahip olduğundan ve kapının açık olmadığından emin ol. CheckCinematic(Agent:agent):void= if: ConditionalButton.IsHoldingItem[Agent] ve IsDoorOpen değil mi? then: spawn{PlayCinematic(Agent)}
Oyuncunun Takip Edilmesi ve Eşyaların Verilmesi
Oyuncu kapıyı açmak için ”DoorVolume” içindeyken silahını sallamaya ihtiyaç duyduğu için, girdi tetikleyici cihazının bu etkinliği dinlemesi gerekiyor. Oyuncun bir silah salladığında giriş tetikleyicinin bunu dinlemesini sağlamak için aşağıdaki adımları izle.
-
”door_open_cinematic_manager” sınıf tanımına yeni bir ”OnPlayerEntersVolume()” yöntemi ekle. Bu fonksiyon bir Aracı alır ve ”DoorVolume” alanına girdiklerinde onları ”FireTrigger” ile kaydeder.
# Aracıyı DoorVolume alanına girdiğinde FireTrigger ile kaydeder. OnPlayerEntersVolume(Agent:agent):void= Logger.Print(”Aracı DoorVolume alanına girdi")
-
”OnPlayerEntersVolume()” içinde aracıyı ”Register()” komutunu çağırarak FireTrigger ile kaydeder. Daha sonra ”FireSubscription” öğesini ”FireTrigger.PressedEvent” öğesini ”PlayCinematic()” öğesine kaydetmenin sonucuna ayarla. Tamamlanmış ”OnPlayerEntersVolume()” fonksiyonun aşağıdaki gibi görünmelidir:
# Aracıyı DoorVolume alanına girdiğinde FireTrigger ile kaydeder. OnPlayerEntersVolume(Agent:agent):void= Logger.Print(”Aracı DoorVolume alanına girdi") FireTrigger.Register(Agent) # PressedEvent öğesini PlayCinematic öğesine abone yap ve bu aboneliği FireSubscrition içine kaydet. FireSubscription = option{(FireTrigger.PressedEvent.Subscribe(PlayCinematic))} olarak ayarla
-
Bir oyuncu ”DoorVolume” alanından çıktığında, ”FireTrigger.PressedEvent” aboneliğini izlemeyi bırakman gerekir, çünkü oyuncu yalnızca bölgenin içinde değilse sinematiği etkinleştirebilmelidir. Bunu yönetmek için ”door_open_cinematic_manager” sınıf tanımına yeni bir ”OnPlayerExitsVolume()” yöntemi ekle.
# Aracının kaydını, DoorVolume alanından çıktığında FireTrigger ile siler. OnPlayerExitsVolume(Agent:agent):void=
-
”OnPlayerExitsVolume()” içinde ilk olarak ”FireTrigger” ile aracının ”Kaydını Sil()”. Ardından ”FireSubscription” içindeki aboneliği al ve iptal et. Tamamlanan ”OnPlayerExitsVolume()” metodun şu şekilde görünmelidir:
# Aracının kaydını, DoorVolume alanından çıktığında FireTrigger ile siler. OnPlayerExitsVolume(Agent:agent):void= Logger.Print(”Aracı DoorVolume alanından çıktı") FireTrigger.Unregister(Agent) # FireSubscription aboneliğini iptal et. if (SubscriptionToCancel := FireSubscription?): SubscriptionToCancel.Cancel()
-
Oyuncu ”ItemButton” ile etkileşime girdiğinde, ilerlemek için ihtiyaç duyduğu silah verilir. Ayrıca mini haritalarında, henüz bulamamış olmaları durumunda kapıya giden yolu gösteren bir hedef işareti belirir. Bunu yönetmek için ”door_open_cinematic_manager” sınıf tanımına bir ”aracı” alan yeni bir ”GrantItem()” yöntemi ekle. GrantItem()” içinde, aktarılan aracının üzerinde ”GrantItem” çağrısı yap ve hedef işareti etkinleştir. Tamamlanan ”GrantItem()” yöntemin aşağıdaki gibi görünmelidir:
# Aracıya ItemGrantButton ile etkileşime girdiklerine bir eşya verir # ve ObjectiveMarker öğesini etkinleştirir. GrantItem(Agent:agent):void= ItemGranter.GrantItem(Agent) ObjectiveMarker.Enable()
Tümünü Birbirine Bağlama
Artık her olayı ilgili işlevine abone olabilir ve kodunu oyun içinde test edebilirsin.
-
”OnBegin()” içinde ”ItemGrantButton.InteractedWithEvent” öğesini ”GrantItem()” fonksiyonuna abone yap. Ardından hem ”DoorVolume.AgentEntersEvent” hem de ”DoorVolume.AgentExitsEvent” öğelerini kendileriyle ilişkili fonksiyonlara abone yap. ”OnBegin()” fonksiyonun şu şekilde görünmelidir:
# Cihaz, çalışmakta olan bir oyunda başlatıldığında çalışır OnBegin<override>()<suspends>:void= # Her olayı ilişkili fonksiyonuna abone yap. ItemGrantButton.InteractedWithEvent.Subscribe(GrantItem) DoorVolume.AgentEntersEvent.Subscribe(OnPlayerEntersVolume) DoorVolume.AgentExitsEvent.Subscribe(OnPlayerExitsVolume)
-
Kodunu kaydet ve onu derle.
-
UEFN içinde bölümünde DoorOpenCinematicManager öğesini seç. Anahat Düzenleyicisinde her düzenlenebilir referansı bölümdeki cihaza ata.
Büyütmek için görsele tıkla.
-
Bölümü oyun açısından test etmek için UEFN araç çubuğu içindeki Oturumu Başlat öğesine tıkla. Bölümü test ettiğinizde, eşya düğmesi ile etkileşim geçmek oyuncuya ihtiyaç duyduğu silahı vermeli ve oyuncunun mini haritasına bir hedef işareti eklemelidir. Oyuncu silahı kapı bölgesinin içinde kullandığında, bir sinematik oynatılmalı, kapı açılmalı ve oyuncu birinci şahıs görünümüne geçmelidir.
Tam Kod
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# Verse cihazı oluşturma hakkında bilgi edinmek için bkz. https://dev.epicgames.com/documentation/en-us/uefn/create-your-own-device-in-verse.
door_open_log := class(log_channel){}
door_open_cinematic_manager := class(creative_device):
Logger:log = log{Channel := door_open_log}
# Oyuncunun silahını sallamasını dinleyen girdi tetikleyicisi
# DoorVolume içindeyken.
@editable
FireTrigger:input_trigger_device = input_trigger_device{}
# Kapıyı açarken sinematiği oynatan bir sinematik sekans cihazı.
@editable
CinematicSequence:cinematic_sequence_device = cinematic_sequence_device{}
# Oyuncunun doğru silaha sahip olup olmadığını kontrol eden Koşullu Eşya Düğmesi.
@editable
ConditionalButton:conditional_button_device = conditional_button_device{}
# Kapının açılmasını engelleyen kilit cihazı.
@editable
Door:lock_device = lock_device{}
# Kapıyı açmak için oynatıcının içinde olması gereken bölge.
@editable
DoorVolume:volume_device = volume_device{}
# Birinci şahıs görüşünü simüle eden yörünge kamerası.
@editable
FPSCamera:gameplay_camera_orbit_device = gameplay_camera_orbit_device{}
# Oyuncuya ihtiyaç duyduğu silahı veren eşya verici cihazı.
@editable
ItemGranter:item_granter_device = item_granter_device{}
# ItemGranter öğesini etkinleştiren buton.
@editable
ItemGrantButton:button_device = button_device{}
# Kapının konumunu gösteren harita göstergesi cihazı.
@editable
ObjectiveMarker:map_indicator_device = map_indicator_device{}
# Kapının zaten açık olup olmadığını izleyen bir değişken.
var IsDoorOpen:logic = false
# İptal edilebilir FireTrigger cihazı aboneliği.
var FireSubscription:?cancelable = false
# Cihaz, çalışmakta olan bir oyunda başlatıldığında çalışır
OnBegin<override>()<suspends>:void=
# Her olayı ilişkili fonksiyonuna abone yap.
ItemGrantButton.InteractedWithEvent.Subscribe(GrantItem)
DoorVolume.AgentEntersEvent.Subscribe(OnPlayerEntersVolume)
DoorVolume.AgentExitsEvent.Subscribe(OnPlayerExitsVolume)
# Aracıyı DoorVolume alanına girdiğinde FireTrigger ile kaydeder.
OnPlayerEntersVolume(Agent:agent):void=
Logger.Print(”Aracı DoorVolume alanına girdi")
FireTrigger.Register(Agent)
# PressedEvent öğesini PlayCinematic öğesine abone yap ve bu aboneliği FireSubscrition içine kaydet.
FireSubscription = option{(FireTrigger.PressedEvent.Subscribe(CheckCinematic))} olarak ayarla
# Aracının kaydını, DoorVolume alanından çıktığında FireTrigger ile siler.
OnPlayerExitsVolume(Agent:agent):void=
Logger.Print(”Aracı DoorVolume alanından çıktı")
FireTrigger.Unregister(Agent)
# FireSubscription aboneliğini iptal et.
if (SubscriptionToCancel := FireSubscription?):
SubscriptionToCancel.Cancel()
# Aracıya ItemGrantButton ile etkileşime girdiklerine bir eşya verir
# ve ObjectiveMarker öğesini etkinleştirir.
GrantItem(Agent:agent):void=
ItemGranter.GrantItem(Agent)
ObjectiveMarker.Enable()
# Oyuncunun gerekli eşyaya sahip olduğundan ve kapının açık olmadığından emin ol.
CheckCinematic(Agent:agent):void=
if:
ConditionalButton.IsHoldingItem[Agent] ve IsDoorOpen değil mi?
then:
spawn{PlayCinematic(Agent)}
# Sinematiği oynatır ve kapının kilidini açar.
PlayCinematic(Agent:agent)<suspends>:void=
Logger.Print(”Oyuncu eşyayı tutuyor, sinematiği oynatıyor...")
CinematicSequence.Play()
# Kapının kilidini aç ve ardından kapıyı aç.
Door.Unlock(Agent)
Door.Open(Agent)
IsDoorOpen = true olarak ayarla
# Birinci şahıs kamerasını aracıya ekle. Sinematik bittiğinde,
# aracı birinci şahıs görüş açısına sahip olur.
FPSCamera.AddTo(Agent)
Logger.Print(”Kamera değişti")
# Hedef İşareti Devre Dışı Bırak
ObjectiveMarker.Disable()
Kendi Kendine Yapabileceklerin
Bu kılavuzu tamamlayarak, bir oyuncu bir kapıyı açtığında sinematik oynatmak için Verse'i nasıl kullanacağını ve üçüncü şahıs kamerasından birinci şahıs kamerasına nasıl geçeceğini öğrendin.
Öğrendiklerini kullanarak aşağıdaki işlemleri yapmaya çalış:
-
Yan kaydırma görünümüne geçiş gibi başka türde kamera geçişleri yapabilir misin?
-
Kamera açısını değiştirmek için özel bir düğmeye veya ilerlemek için birden fazla kamera açısı gerektiren bir bölüm tasarlamaya ne dersin?
-
Negatif cezalar için girdi tetikleyicileri kullanabilir misin, örneğin oyuncuları bir bölümü atlamadan geçmeye zorlamak ve başarısız olurlarsa bir sinematik oynatmak gibi?