Bileşenler, oyununu oluşturmak için veri ve mantık kullanan temel yapı taşlarıdır. Anahtar kare hareketi bileşeni, varlıklara animasyon anahtar kareleri ekleyip bunların bölümde belirtilen parametreler dahilinde akıcı şekilde hareket etmesini sağlar.
UEFN’de, objelerin dünyadaki konumlarını Verse kodu ile TeleportTo() veya MoveTo() gibi fonksiyonlar kullanarak değiştirip hareket ettirebilirsin. Ancak, bu fonksiyonların Verse kodlarının her simülasyon güncellemesinde değerlendirilmesi gerektiğinden bu fonksiyonları kullanarak sorunsuz, sürekli hareket elde etmek zor olabilir. Objeleri konumlarını değiştirerek hareket ettirmek yerine animasyonlardan yararlanabilirsin. Obje ayarlanmış anahtar kareler arasında hareket ettiğinden ve bunu sunucu istemci gecikmeleriyle karşılaşmadan yaptığından, keyframed_movement_component bileşeni akıcı animasyonlar oluşturabilir. Bir dizi ray üzerinde akıcı bir şekilde hareket eden bir maden arabasını düşün. Bir anahtar kare hareketi bileşeni, bunu oluşturabilmen için iyi bir çözüm sunar.
Varlığına bir bileşen eklemek için Varlıklar ve Bileşenlerle Çalışma bölümüne bakabilirsin. Bileşen, anahtar kare hareketi bileşeninin Verse sınıfıyla eşleşecek şekilde keyframed_movement_component olarak listelenmiştir. Bileşen için Verse API’si hakkında daha fazla bilgi için keyframed_movement_component API referans modülüne göz at.
Kodunda KeyframedMovement modülüne referans verdiğinde, seçili varlık üzerinde gerçekleştirebileceğin işlemlere erişebilirsin. Aşağıdaki örnekte, varlığı taşımak için @editable ve keyframe_movement_delta bileşeninin nasıl kullanılacağı gösteriliyor.
Örnek
Bir varlığın bir dizi anahtar kare arasında hareket etmesini sağlamak için:
Projende bir varlıkoluştur. Bunu ilk kez yapıyorsan Varlıklar ve Bileşenlerle Çalışma bölümüne bak.
+ Bileşen düğmesine tıkla ve bir mesh_component ekle. Küp örgüsünü seç.
Bir KeyframedMovement bileşeni ekle.
+ Bileşen düğmesine tekrar tıkla ve bu sefer Yeni Verse Bileşeni seçeneğine git.
Bileşeni
move_cycle_componentolarak adlandır ve Oluştur düğmesine tıkla.Visual Studio Code’da,
KeyframedMovementmodülünü{ /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }kullanarakbelirle.Dönüşümünçalışması için,{ /Verse.org/SpatialMath } kullanarakbelirttiğinden emin ol.Move_cycle_componentsınıfının üstüne,Anahtar Kareleradlı birdüzenlenebilirkeyframed_movement_deltadizisi ekle. Editörde birkeyframed_movement_deltadizisini kullanıma açarak doğrudan ayrıntılar panelinden anahtar kareler oluşturabilir ve animasyondaki her anahtar kare içindönüşüm,süreveyavaşlatmadeğerlerini ayarlayabilirsin.
# A Verse-authored component that can be added to entities
move_cycle_component<public> := class<final_super>(component):
@editable
var Keyframes:[]keyframed_movement_delta = array{}Verse kodunu oluşturduktan sonra Anahtar Kareler editörde move_cycle_component altında görünür. + simgesine tıklayarak 2 dizi elemanı ekle.
Artık her dizi elemanının dönüşümünü, süresini ve yavaşlatma değerini değiştirebilirsin. Her dizi elemanı bir anahtar karenin eşdeğeridir.
İlk elemanda dönüşümü genişlet ve ileri değerini 500 olarak ayarla. İkinci elemanda, sol değerini -500 olarak ayarla. Her iki eleman için de süreyi 2,0 (saniye), yavaşlatma değerini ise cubic_bezier_asset_function olarak ayarla.
İlk anahtar karenin örgünün dünyadaki konumuna göre olması gibi, ayarladığın her yeni anahtar karenin değerinin önceki anahtar kareye göre olduğunu unutmamalısın.
Daha önce X, Y ve Z olarak adlandırılan dönüşüm değerlerinin artık İleri, Sağ ve Yukarı şeklinde olduğuna dikkat et. Bundan sonra bir dönüşüm fonksiyonu belirtirken derleyici hatalarıyla karşılaşmamak için kodunda İleri, Sağ ve Yukarı değerlerini kullanman gerekiyor. Daha fazla bilgi için UEFN’de FRU Koordinat Sistemi bölümüne bakabilirsin.
Bir oturumu kaydedip başlattığında küpünün ayarladığın anahtar kareler arasında hareket ettiğini göreceksin:
Verse’te Anahtar Kareler Oluşturma
Anahtar kareleri Verse koduyla da oluşturabilirsin:
Keyframed_movement_componentöğesini al.İlk anahtar karen olacak
Key0’ıkeyframed_movement_deltafonksiyonunu çağırıpdönüşüm,süreveyavaşlatmadeğerlerini belirle. İkinci anahtar kare olanKey1için bu işlemi tekrarla.Animasyonu ayarla. Burada kayıttan oynatma modunu da belirleyebilirsin. Bu örnekte animasyon
pinponolacaktır.Animasyonu oynat. Doğru sözdizimi için aşağıdaki koda bak.
# Runs when the component should start simulating in a running game.
# Can be suspended throughout the lifetime of the component. Suspensions
# will be automatically canceled when the component is disposed of or the game ends.
OnSimulate<override>()<suspends>:void =
# TODO: Place simple suspends logic to run for this component here
Print("OnSimulate")
if:
KFM:keyframed_movement_component = Entity.GetComponent[keyframed_movement_component]
Tam Kod
Aşağıda bu örnek için tam kodun kopyalanıp yapıştırılabilir bir sürümü verilmiştir:
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /Verse.org/SpatialMath }
using { /UnrealEngine.com/Temporary/SceneGraph }
using { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }
# A Verse-authored component that can be added to entities
move_cycle_component<public> := class<final_super>(component):