En kolay engellerden bazıları sadece ileri geri hareket eder. Atlamalarını zamanlaman ve düşmemek için dikkatli hareket etmen gereken platform zorluklarında bunlarla sıklıkla karşılaşırsın.
Platformu bu şekilde hareket ettirmeye yer değiştirme veya obje dönüşümünün konumunu değiştirme denir. Bu bölümde sadece ileri geri hareket etmekle kalmayıp dünyada birden fazla noktaya hareket edebilen platformlar yapmayı ve bunları ilk engelini oluşturmak için nasıl kullanacağını öğreneceksin!
Yer Değiştiren Nesneler Oluşturma
Platformlarına yer değiştirten kodu oluşturmak için aşağıdaki adımları izle:
Verse Gezgini’ni kullanarak,
movable_prop’tan devralantranslating_propadında yeni bir Verse sınıfı oluştur. Özelliklerini UEFN’de kullanıma açmak için bu sınıfa<concrete>belirleyicisi ekle.Verse# A prop that moves (translates) toward either a Creative prop target # or a position in world space. translating_prop<public> := class<concrete>(movable_prop):{ /Fortnite.com/Devices/CreativeAnimation } kullanmave{ /UnrealEngine.com/Temporary/SpatialMath } kullanmaifadelerini dosyanın üst kısmına ekleyerek bu modülleri içe aktar. Nesnene animasyon uygulamak için bunlara ihtiyacın var. Ayrıca bu bölümde kullanılan araç ipuçlarına burada yer verilmiştir.Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Devices/CreativeAnimation } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/SpatialMath } MovePositionTip<localizes>:message = "The optional position to move to World Space. Use this if you do not want to set a MoveTarget." # A prop that moves (translates) toward either a Creative prop target # or a position in world space. translating_prop<public> := class<concrete>(movable_prop):translating_propsınıf tanımının üst kısmına aşağıdaki alanları ekle:MoveTargetsadlı düzenlenebilir bircreative_propdizisi. Oyun sırasındaRootProp’un, bu Kreatif nesnelerine doğru hareket edecektir. Dönüşüm dışında başka bir nesne kullanmak, hareket edilecek hedef olduğundan nesnelerinin nereye gittiğini görmeyi kolaylaştırır. Bunları daha sonra editörde oyun sırasında görünmez hale getirirsin.Verse# The Creative prop targets for the RootProp to move toward. @editable {ToolTip := MoveTargetsTip} var MoveTargets:[]creative_prop = array{}MovePositionadında düzenlenebilir, isteğe bağlı birvector3değişkeni. BirMoveTargetnesnesi atamazsan kök nesnen nereye hareket edeceğini anlamak için bunu kullanır.Verse# The position for the RootProp to move toward. Use this if you # do not want to set a MoveTarget. @editable {ToolTip := MovePositionTip} var MovePosition:?vector3 = falseTargetPositionadında birvector3değişkeni. Bu, nesnenin gerçekte hareket edeceği konumdur ve hareket hedefinin konumu veyaMovePositionolarak ayarlanır.Verse# The position the prop is currently targeting. var TargetPosition:vector3 = vector3{}Sınıf tanımın şu şekilde görünmelidir:
Verse# A prop that moves (translates) toward either a Creative prop target # or a position in world space. translating_prop<public> := class<concrete>(movable_prop): # The Creative prop targets for the RootProp to move toward. @editable {ToolTip := MoveTargetsTip} var MoveTargets:[]creative_prop = array{} # The optional position for the RootProp to move toward. Use this if you # do not want to set a MoveTarget.
Nesneni
movable_prop’ta hareket ettirenMove()fonksiyonunu zaten ayarladığın için onu bu sınıfta geçersiz kılabilirsin.translating_propsınıfındaMove()fonksiyonunu geçersiz kıl.Verse# Translate toward the MovePosition, or MoveTarget if one is set. Move<override>()<suspends>:void=Move()fonksiyonundaki birififadesinde,MovePosition’ın ayarlanıp ayarlanmadığını ve birNewPositiondeğerinde depolanıp depolanmadığını kontrol et. Öyleyse,TargetPosition’ıNewPositionolarak ayarla.Verse# Translate the RootProp toward the MoveTarget, or MovePosition if one is set. Move<override>()<suspends>:void= # Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPositionMoveToEase()fonksiyonunun ona iletilmesi için biranimation_mode’a ihtiyacı vardır. Animasyonun,Move()her çağrıldığında bir kez oynatılır veanimation_mode, animasyonun sona erdiğinde ne olacağını kontrol eder.TargetPosition,MoveDuration,MoveEaseTypeveanimation_mode.OneShot’ı iletmek içinMoveToEase()’i çağır. Bu animasyon modunun kullanılması, objen hedefine ulaştığında animasyonunun duracağı anlamına gelir. Bu, daha önce ayarladığın, dönüş veya ölçek almayan, aşırı yüklenmişMoveToEase()fonksiyonudur.Verse# Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPosition # Call MoveToEase to start moving the prop. The OneShot animation mode will play the animation once. RootProp.MoveToEase(TargetPosition, MoveDuration, MoveEaseType, animation_mode.OneShot)Objeni sıfırlamak veya hareket halinde tutmak istersen tek seferlik animasyon modu yararlı olsa da, objeyi ters yönde oynatmak istersen ne olur? Bu durumda,
PingPonganimasyon modunu kullanabilirsin. Bu mod, animasyonunu oynatır ardından nesneyi başladığı yere geri taşımak için ters yönde oynatır. Animasyonunu döngüye sokanLoopanimasyon modu da vardır ancak bu mod, animasyonunun başladığı yerde bitmesini gerektirir. Deneyimin için uygun doğru animasyon modunu seç.Nesnelerini ayarlarken, editörde bir
MovePositionayarlamadıysan kök nesnenin hareket edeceği bir veya daha fazlaMoveTargetsayarlaman gerekir.MoveTargets’ı birforifadesinde işlemek içinMoveTargets’daki her hedefi yinele.MoveTarget’ınIsValid[]çağrılarak ayarlanıp ayarlanmadığını kontrol et. ÖyleyseTargetPosition’ıMoveTarget’ın yer değiştirmesi olarak ayarla.Verse# Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPosition else: for: MoveTarget:MoveTargets do: # Set the TargetPosition to the MoveTarget's position if theSon olarak
MoveToEase()’i, animasyon moduanimation_mode.OneShotolacak şekilde yeniden çağır. Bunu birforifadesinde yaptığında, nesnen sırayla hedeflerin her birine hareket edecek ve sonunda sıfırlanacak veya ayarladığın parametrelere göre devam edecektir. TamamlanmışMove()fonksiyonun şu şekilde görünmelidir:Verse# Translate the RootProp toward the MoveTarget, or MovePosition if one is set. Move<override>()<suspends>:void= # Set the TargetPosition to the MovePosition if it is set. if: NewPosition := MovePosition? then: set TargetPosition = NewPosition # Call MoveToEase to start moving the prop. The OneShot animation mode will play the animation once.
Verse Cihazını Oluşturma
Artık Verse kodun tamamlandığına göre onu bölüm içinde çağırmanın bir yolunu bulman gerek. Oyun başladığında nesnelerini koordine etmek ve tümünü ayarlamak için başka bir Verse cihazı kullanırsın. Engellerini koordine edip platformlarını hareket ettirmek için bu adımları izle!
Verse Gezgini’ni kullanarak
prop_animatoradında yeni bir Verse cihazı oluştur. Bu, nesnelerini hareket ettirmeyi koordine edecek cihazdır.prop_animator’da,TranslatingPropsadında düzenlenebilir birtranslating_propdizisi ekle. ArdındanOnBegin()’deki birforifadesinde, her nesne içinSetup()’ı çağır. Tamamlanmışprop_animatordosyan aşağıdaki gibi görünmelidir:Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/Diagnostics } TranslatingPropsTip<localizes>:message = "The props that translate (move) using animation." # Coordinates moving props through animation by calling each moveable_prop's Setup() method. prop_animator := class(creative_device): # Array of moveable_props that translate using animation.Kodunu kaydet ve derle.
prop_animatorcihazını bölüme sürükle.
Nesneleri Cihazlara Bağlama
Editöre geri dönerek bir boşluk oluşturmak için başlangıca yakın olan nesnelerden bazılarını sil. Bölümüne iki adet FG01 Uçan Platform M nesnesi ekle. Animasyon uygulayacağın platformlar bunlar olduğundan onları TranslatingPlatform olarak adlandır. Ardından birkaç FG01 Düğme Ampul nesnesi ekle. Bunlar her platformun hareket edeceği hedefler olacaktır. Bunları PlatformTarget olarak adlandır. Platformları boşluğun üzerine yerleştir ve hedefleri platformların gitmesini istediğin yere yerleştirdiğinden emin ol. Her platform için birden fazla hedef belirleyebilirsin.
Yer değiştiren nesnelerin kurulumu. Her platform, oklarla gösterildiği gibi iki hareket hedefi arasında ileri geri hareket eder.
Oyun sırasında hedef nesnelerini gizlemek istersen her hedef için **İşleme** başlığı altındaki **Oyundaki Aktör Gizli** seçeneğini **True** olarak ayarladığından emin ol.
prop_animator cihazını bölüme sürükle ve seç. Anahat Düzenleyicisi’nde, her platform için TranslatingProps’a bir dizi öğesi ekle. Her bir nesneye aşağıdaki değerleri ata:
| seçenek | Değer | Açıklama |
|---|---|---|
MoveTargets | Nesnenin hareket etmesini istediğin hedeflere ata. | Nesnen sırayla bu Kreatif nesne hedeflerine doğru hareket edecektir. |
RootProp | Animasyon uyguladığın nesneye ata. | Bu, animasyonunu yaptığın nesnedir. |
Oturumu Başlat’a tıkla ve platformlarının animasyonunu izle! Farklı senaryolar oluşturmak için MoveDuration, MoveEaseType ve başlangıç ile bitiş gecikmelerini değiştirmeyi dene.
Yer değiştirme çalışmıyor ve bir sonraki bölümde farklı yönlere dönen nesneler oluşturacaksın!
Sıradaki
Tam Kod
Bu bölümde oluşturulan kodun tamamı şöyledir:
translating_prop.verse
using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/CreativeAnimation }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/SpatialMath }
MovePositionTip<localizes>:message = "The optional position to move to World Space. Use this if you do not want to set a MoveTarget."
# A prop that moves (translates) toward either a Creative prop target
# or a position in world space.
translating_prop<public> := class<concrete>(movable_prop):
prop_animator.verse
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
TranslatingPropsTip<localizes>:message = "The props that translate (move) using animation."
# Coordinates moving props through animation by calling each moveable_prop's Setup() method.
prop_animator := class(creative_device):
# Array of moveable_props that translate using animation.