Hareketli nesneler, 3D alan içinde bir veya daha fazla eksende hareket eden nesnelerdir. Roblox'un simülasyon motorunun yerleşik gücünü kullanarak, nesneleri gerçek dünya fizik davranışlarını taklit edecek şekilde hareket ettirebilir ve çevreleriyle etkileşime geçirebilirsiniz. Bu, oyuncular için tanıdık ve sezgisel olan yerçekimi, aerodinamik ve sürtünme gibi davranışları içerir.
Moving Objects .rbxl dosyasını referans alarak, bu eğitim, fiziksel kuvvetlerin Stüdyo'daki doğrusal hareketi nasıl etkilediğini açıklar ve oyunlarınızda nesneleri A noktasından B noktasına farklı hareket davranışlarıyla nasıl hareket ettireceğinizi gösterir. Bu, aşağıdakiler hakkında rehberlik içerir:
- Tüm montajı sabit bir doğrusal hızda hareket ettirmek için LinearVelocity mover kısıtlamasını kullanma.
- Bir montajı tek bir eksene kısıtlamak ve 3D alan içindeki bir noktaya göre sabit bir doğrusal hızda hareket ettirmek için PrismaticConstraint kullanma.
- Bir montajı başlangıç kuvveti ile hareket ettirmek için ApplyImpulse yöntemini kullanma, böylece montaj zamanla yavaşlayarak devir alır.
Doğrusal hareket ve fiziksel kuvvetler
Roblox Studio, gerçek zamanlı fizik davranışlarını taklit eden bir gerçek dünya simülasyon motorudur, bu nedenle nesnelerin doğrusal olarak nasıl hareket edebileceğini tahmin etmek için, nesnelerin gerçek hayatta doğrusal hareketle nasıl hareket ettiğine dair yüksek seviyede bir anlayışa sahip olmak önemlidir.
Doğrusal hareket, bir eksen boyunca hareket etmektir. Örneğin, bir blok doğrusal hareket ettiğinde, belirli bir eksen boyunca hareket eder.

Doğrusal hareket, nesneleri hareket ettirmek için dışsal fiziksel kuvvetlerin itmesi veya çekmesi olmadan var olamaz. Newton'un hareketin birinci yasası gereği, hareketsiz nesneler hareketsiz kalır ve hareket eden nesneler, dışsal bir kuvvet tarafından etkilenmedikçe sabit bir hızda hareket eder. Örneğin, hareketsiz bir blok, rüzgar gibi bir fiziksel kuvvet onu hareket ettirmedikçe hareketsiz kalır.
Kuvvet, nesnelerin doğrusal hızlarını bir eksen boyunca değiştiren fiziksel bir itme veya çekmenin yönü ve büyüklüğünün ölçüsüdür. Hızdaki bir değişim ivme olarak bilinir. Bu kavram, Stüdyo'da nesnelerin hareket etmesi için özellikle önemlidir; nesnelere uyguladığınız kuvvet ne kadar fazla olursa, o kadar hızlı ivmelenirler.
Bu, kuvvetin, nesneye karşı iten fiziksel kuvvetlerden, örneğin yerçekimi veya sürtünmeden daha büyük olması gerektiği anlamına gelir. Örneğin, bloğu bir metal plakanın üzerine koyarsanız, rüzgarın fiziksel kuvvetinin, bloğun ivmelenmeye devam etmesi için metal plakanın sürtünme miktarını aşması gerekir. Eğer rüzgarın kuvveti, metal plakanın sürtünmesinden çok daha fazla değilse, blok ivmelenir, ancak önceki örnekten daha yavaş.

Doğrusal hız, bir nesnenin hareketinin ölçüsüdür veya nesnenin bir eksen boyunca bir zaman diliminde konumunu ne kadar hızlı değiştirdiğidir. Stüdyo, bir nesnenin saniyede kaç stud hareket ettiğini ölçerek doğrusal hızı belirler. Studlar, uzunluğu ölçmek için Roblox'un birincil fiziksel birimleridir ve her bir stud, gerçek dünyada yaklaşık 28 cm'ye eşittir.

Doğrusal hızı anlamak, oyun tasarımı için önemlidir çünkü hareketli nesneleriniz için belirli bir hıza ulaşmak için ne kadar kuvvet gerektiğini belirlemenize yardımcı olur. Örneğin, nesneleri yukarı doğru itmek istediğinizde, nesnelerin doğru bir şekilde hareket etmesi için çevredeki yerçekimini aşmak üzere kuvvetinizi nasıl ayarlamanız gerektiğini dikkate almak önemlidir.
Aşağıdaki bölümler, nesneleri sabit veya başlangıç doğrusal hızıyla hareket ettirmek için gerekli kuvvetle nasıl hareket ettireceğinizi öğrenirken bu kavramlara daha derinlemesine dalar. Bu fizik kavramlarını inceleyerek, Stüdyo'da herhangi bir ideal doğrusal hareket davranışını elde etmek için mülk değerlerini nasıl ayarlayacağınızı daha doğru bir şekilde tahmin edebilirsiniz.
Sabit bir doğrusal hızı koruma
Bir nesnenin sabit bir doğrusal hıza ulaşması ve bunu koruması için, nesnenin doğrusal hızını yavaşlatan veya nesnenin hareketsiz kalmasına neden olan herhangi bir karşıt fiziksel kuvveti aşmak için bir kuvvet gereklidir. Örneğin, bir nesnenin Stüdyo'da [0, 12, 0] doğrusal hızına sahip olmasını istiyorsanız, nesnenin çevresinde Y ekseni boyunca saniyede 12 studa ulaşması ve bunu koruması için yeterli kuvvet gereklidir.
Gerekli kuvvet miktarı, yalnızca yerçekimi ve sürtünme gibi çevredeki karşıt fiziksel kuvvetlere bağlı değildir, aynı zamanda nesnenin kendisine de bağlıdır. Örneğin, aynı şekle sahip iki nesne aynı eksende hareket ediyorsa, daha büyük kütleye sahip olan nesne, aynı doğrusal ivmeyi elde etmek için daha fazla kuvvet gerektirir.
Aşağıdaki alt bölümler, farklı şekil ve boyutlardaki montajları kullanarak, ya tüm bir nesneyi ya da nesnenin yalnızca bir kısmını sabit bir doğrusal hızda nasıl hareket ettireceğinizi öğretir. Farklı mülk değerleriyle denemeler yaparken, kendi oyunlarınızda montajlar için ihtiyaç duyduğunuz maksimum kuvvet miktarını tahmin etmeyi öğreneceksiniz.
Doğrusal Hız kısıtlamalarını kullanma
LinearVelocity nesneleri, sabit bir doğrusal hızı korumak için tüm bir montaja kuvvet uygulayan bir mover kısıtlaması türüdür. Montajın hareketi sırasında pozisyonunu bir eksene kilitlememek, montajın 3D alanındaki diğer nesnelerle çarpışırken dönebilmesine olanak tanır. Bu tür bir hareket, oyuncuların tahmin etmesini daha zor hale getiren sürpriz oyun senaryolarına yol açar.
Montajı hareket ettirmeye başlamak için, LinearVelocity kısıtlamasının bilmesi gerekenler:
- Kuvvet uygulamak için bir nokta ve pozitif veya negatif yön.
- Montajın saniyede kaç stud hareket etmesini istediğiniz.
- Montajın sabit bir doğrusal hıza ulaşması için motorun uygulayabileceği maksimum kuvvet.
Bu süreci göstermek için, bir lily pad'i, LinearVelocity kısıtlamasının referans aldığı bir ek parça ile yapılandıracaksınız ve lily pad'i dünyanın negatif X ekseni boyunca sabit bir doğrusal hızda saniyede 15 stud hareket ettireceksiniz.

Ekleme
Kuvvet uygulamak için bir nokta belirtmek üzere montaja bir Attachment nesnesi ekleyebilir ve ardından ek parçanın 3D alanındaki konumunu yapılandırabilirsiniz. Örnek Moving Objects oyunu, kısıtlamanın mesh'i belirli bir eksen boyunca hareket ettirebilmesi için lily pad'in ortasına bir ek parça yerleştirir.
Ek parçalar, hareket eksenlerini görselleştirmenize yardımcı olacak görsel yardımlar içerir. Sarı ok, ek parçanın birincil eksenini belirtirken, turuncu ok ek parçanın ikincil eksenini belirtir. Bu teknik adımlar sırasında hareketi etkilemese de, bu görsel yardımları gelecekteki referanslar için anlamak önemlidir çünkü PrismaticConstraint gibi farklı kısıtlamalar için ideal davranışları belirlemenize yardımcı olabilir.

Bir ek parça eklemek için:
Explorer penceresinde, LinearVelocityExample klasörünü genişletin, ardından altındaki LilyPad_DIY modelini genişletin.
Pad mesh'ine bir ek parça ekleyin.
- Mesh'in üzerine gelin ve ⊕ butonuna tıklayın. Bir bağlam menüsü görüntülenir.
- Menüyü kullanarak bir Attachment ekleyin. Ek parça, parçanın ortasında görüntülenir.
- Ek parçayı MoveAttachment olarak yeniden adlandırın.

Kısıtlamayı yapılandırma
Artık mesh'iniz, lily pad'i hareket ettirmek için sabit bir nokta olduğuna göre, LinearVelocity kısıtlamasının sabit doğrusal hız için yön ve büyüklüğü, mesh'in saniyede kaç stud hareket etmesini istediğiniz ve mesh'in sabit bir doğrusal hıza ulaşması için motorun uygulayabileceği maksimum kuvvetin özelliklerini yapılandırabilirsiniz.
Örnek Moving Objects oyunu, lily pad'i sabit bir doğrusal hızda dünyanın negatif X ekseni boyunca saniyede 15 stud hareket ettirmek için 5000 Rowton'a kadar sabit kuvvet uygular. Rowtonlar, kuvvet ölçmek için Roblox'un birincil fiziksel birimleridir. Roblox fiziksel birimlerini ve bunların metrik birimlere nasıl dönüştüğünü referans almak için Roblox Birimleri sayfasına bakın.
LinearVelocity kısıtlamasını yapılandırmak için:
Kısıtlamanın doğrusal yönünü referans alabilmeniz için, Stüdyo'nun Görünüm menüsünden Kısıtlama Ayrıntılarını Göster seçeneğini etkinleştirin.
Pad mesh'ine bir LinearVelocity kısıtlaması ekleyin.
- Explorer penceresinde, mesh'in üzerine gelin, ardından ⊕ simgesine tıklayın. Bir bağlam menüsü görüntülenir.
- Bağlam menüsünden LinearVelocity ekleyin.
Mesh'in ek parçasını yeni kısıtlamaya atayın.
- Explorer penceresinde, kısıtlamayı seçin.
- Properties penceresinde,
- Attachment0'ı MoveAttachment olarak ayarlayın.
- MaxForce'ı 5000 olarak ayarlayın, böylece hedef doğrusal hıza ulaşmak için 5000 Rowton'a kadar sabit kuvvet uygular.
- RelativeTo'yu World olarak bırakın, böylece lily pad, dünyanın konumuna ve yönüne göre hareket eder.
- VelocityConstraint'ı Line olarak ayarlayın, böylece kuvvet ek parçadan bir çizgi boyunca kısıtlanır.
- LineDirection'ı -1, 0, 0 olarak ayarlayın, böylece lily pad, dünyanın negatif X ekseni boyunca hareket eder. Bu özelliği 1, 0, 0 olarak ayarlarsanız, lily pad dünyanın pozitif X ekseni boyunca hareket eder.
- LineVelocity'yi 15 olarak ayarlayın, böylece lily pad'i saniyede 15 stud hareket ettirin.

Ayarladığınız kuvvet miktarının mesh'i dünyanın negatif X ekseni boyunca saniyede 15 stud hareket ettirdiğini doğrulayın.
Mezzanin'in açılır menüsünden Run simülasyon modunu seçin ve başlamak için Oyna butonuna tıklayın. Stüdyo, 3D alan içinde avatarınız olmadan mevcut kamera konumunda oyunu simüle eder.

PrismaticConstraint kısıtlamalarını kullanma
PrismaticConstraint nesneleri, iki ek parça arasında katı bir bağlantı oluşturan bir mekanik kısıtlama türüdür ve ebeveyn montajlarının birbirine göre bir eksen boyunca hareket etmesine olanak tanır. Her iki montajın pozisyonunu tek bir eksene kilitleyerek, her montaj yalnızca aynı yönde dönerlerse dönebilir.
Bu tür bir hareket, oyuncuların tahmin etmesini daha kolay hale getiren kararlı oyun senaryolarına yol açar. Örneğin, örnek Moving Objects oyunu, oyuncuların dev bir nehirden dikkatlice geçmek için kullanabileceği kütük platformlarını hareket ettirmek için PrismaticConstraint nesnelerini kullanır.
PrismaticConstraint.ActuatorType'ı Motor olarak ayarladığınızda, bu kısıtlama iki ek parçaya kuvvet uygular ve ek parçaların sabit bir doğrusal hıza ulaşmasını ve bunu korumasını hedefler. Ebeveyn montajlardan birinin sabitlenmesi durumunda, kuvvet, sabitlenmemiş montajı sabit bir doğrusal hızda hareket ettirmeye devam ederken, sabitlenmiş montaj hareketsiz kalır.
Montajı hareket ettirmeye başlamak için, PrismaticConstraint kısıtlamasının bilmesi gerekenler:
- Kuvvet uygulamak için bir nokta ve pozitif veya negatif yön.
- Ek parçaların saniyede kaç stud hareket etmesini istediğiniz.
- Ek parçaların ve ebeveyn montajlarının sabit bir doğrusal hıza ulaşması için motorun uygulayabileceği maksimum kuvvet.
Bu süreci göstermek için, bir kütük montajını, PrismaticConstraint'ın referans aldığı iki nesne ile yapılandıracaksınız ve kütüğü dünyanın negatif X ekseni boyunca sabit bir doğrusal hızda saniyede 40 stud hareket ettireceksiniz.

Ek parçaları yapılandırma
Bir montaj içindeki belirli bir nesneyi hareket ettirmek için yönü belirtmek üzere iki Attachment nesnesi ekleyebilir ve ardından bunların hizalamasını ve yönelimini 3D alanında yapılandırabilirsiniz. Örnek Moving Objects oyunu, sabitlenmemiş kütüğün sabit parçayla örtüştüğü konumun yakınında, dünyanın X ekseni boyunca iki ek parçayı hizalar ve her ek parçanın birincil eksenini dünyanın negatif X eksenine bakacak şekilde yönlendirir.
PrismaticConstraint kısıtlamanızı bir sonraki bölümde yapılandırdığınızda, kütük, sabit parça ile ilişki içinde hareket edecektir. Diğer bir deyişle, kütük, 3D alanında sabitlenmiş olan parçadan uzaklaşacaktır.
Prismatic kısıtlaması için ek parçaları yapılandırmak için:
Explorer penceresinde, PrismaticConstraintExample klasörünü genişletin, ardından altındaki Log_DIY modelini genişletin.
Log mesh'ine bir ek parça ekleyin.
- Mesh'in üzerine gelin ve ⊕ butonuna tıklayın. Bir bağlam menüsü görüntülenir.
- Menüyü kullanarak bir Attachment ekleyin. Ek parça, parçanın ortasında görüntülenir.
- Ek parçayı LogAttachment olarak yeniden adlandırın.

Aynı işlemi kullanarak, Anchor parçasına bir ek parça ekleyin ve ardından ek parçayı AnchorAttachment olarak yeniden adlandırın.

Dünyanın koordinatları için View Selector aracını referans alarak, LogAttachment ve AnchorAttachment'ı döndürün, böylece her ek parçanın birincil ekseni dünyanın negatif X eksenine bakar.

AnchorAttachment'ı yeniden konumlandırın, böylece her iki ek parça da dünyanın X ekseninde hizalanmış olsun.

Kısıtlamayı yapılandırma
Artık ek parçalarınız aynı eksende hizalanmış ve kütüğün hareket etmesini istediğiniz yönde bakıyorsa, PrismaticConstraint kısıtlamasının özelliklerini yapılandırarak, her ek parçanın birincil ekseninin pozitif veya negatif yönünde hedef sabit doğrusal hızı uygulayıp uygulamayacağını, ek parçaların saniyede kaç stud hareket etmesini istediğinizi ve kütüğün sabit bir doğrusal hıza ulaşması için motorun uygulayabileceği maksimum kuvveti belirleyebilirsiniz.
Kendi kullanım durumlarınız için farklı değerler seçebilirsiniz, ancak örnek Moving Objects oyunu, ek parçaları sabit bir doğrusal hızda dünyanın negatif X ekseni boyunca saniyede 40 radian hareket ettirmek için 50000 Rowton'a kadar sabit kuvvet uygular. Ancak, çünkü sabit ek parça sabit bir nesnede bulunduğundan, yalnızca kütüğün ek parçası hareket edebilir.
Bir prismatic kısıtlamayı yapılandırmak için:
Log mesh'ine bir PrismaticConstraint nesnesi ekleyin.
- Explorer penceresinde, mesh'in üzerine gelin, ardından ⊕ simgesine tıklayın. Bir bağlam menüsü görüntülenir.
- Bağlam menüsünden bir PrismaticConstraint ekleyin.
Kütüğün ek parçalarını yeni kısıtlamaya atayın, böylece kütük, sabit blok parçasına ilişki içinde hareket eder.
- Explorer penceresinde, kısıtlamayı seçin.
- Properties penceresinde,
- Attachment0'ı AnchorAttachment olarak ayarlayın.
- Attachment1'i LogAttachment olarak ayarlayın. Kısıtlama, görünüm alanında görüntülenir.

Explorer penceresinde, kısıtlamayı seçin, ardından Properties penceresinde:
- ActuatorType'ı Motor olarak ayarlayın. Yeni özellik alanları görüntülenir.
- MotorMaxForce'ı 50000 olarak ayarlayın, böylece hedef doğrusal hıza ulaşmak için 50000 Rowton'a kadar sabit kuvvet uygular.
- Velocity'yi 40 olarak ayarlayın, böylece kütüğü saniyede 40 stud hareket ettirin.

Ayarladığınız kuvvet miktarının kütüğü dünyanın negatif X ekseni boyunca saniyede 40 stud hareket ettirdiğini doğrulayın.
Mezzanin'in açılır menüsünden Run simülasyon modunu seçin ve başlamak için Oyna butonuna tıklayın. Stüdyo, 3D alan içinde avatarınız olmadan mevcut kamera konumunda oyunu simüle eder.

Başlangıç doğrusal kuvveti uygulama
Bir nesnenin doğrusal hızını değiştirmenin bir diğer yolu, bir kuvvet darbesi uygulamaktır. Kuvvet darbesinden sonra, nesne, sürtünme gibi bir karşıt kuvvet varsa durana kadar yavaşlar veya karşıt kuvvet yoksa sabit doğrusal hızla hareket etmeye devam eder.
Bu teknik, bir patlama veya etkili bir çarpışma gibi önemli bir oyun olayı sonrasında nesneleri hareket ettirmek için kullanışlıdır, çünkü oyunculara anlık geri bildirim sağlar. Bunu göstermek için, aşağıdaki alt bölüm, bir oyuncunun karakterini, bir zıplama pedine çarptığında yukarı doğru fırlatmayı öğretir; bu başlangıç darbesini, kendi oyun gereksinimlerinize uyacak şekilde yeni değerlerle uyarlayabilirsiniz.
ApplyImpulse kullanma
ApplyImpulse yöntemi, bir montaja kuvvet uygulayarak başlangıç doğrusal hızını elde etmek için kullanılır ve karşıt kuvvetler olduğunda durana kadar yavaşlar. Montajı hareket ettirmeye başlamak için, yöntemin bilmesi gerekenler:
- Hareket ettirilecek montaj.
- Başlangıç doğrusal hızına ulaşmak için kuvvetin uygulanacağı eksen.
- Her eksene uygulanacak kuvvet miktarı.
Tüm bu değerleri bir betikte tanımlayabilirsiniz. Örneğin, örnek betik, hareket ettirilecek montajı oyuncu karakterinin Humanoid nesnesi olarak tanımlar ve ardından oyuncuyu dünyanın pozitif Y ekseni boyunca yukarı fırlatmak için 2500 Rowton-saniye kuvvet darbesi uygular. Oyuncu karakterlerinin farklı kütle miktarlarına sahip olduğunu unutmayın, bu nedenle her oyuncuyu fırlatmak için bu kuvveti artırmanız ve dengelemeniz gerekebilir.
ApplyImpulse kullanarak bir montajı hareket ettirmek için:
Explorer penceresinde, ApplyImpulseExample klasörünü genişletin, ardından altındaki JumpPad_DIY modelini genişletin.
JumpPad parçasına bir betik ekleyin.
- Parçanın üzerine gelin ve ⊕ butonuna tıklayın. Bir bağlam menüsü görüntülenir.
- Menüyü kullanarak bir Script ekleyin. Ek parça, parçanın ortasında görüntülenir.
- Betiği JumpScript olarak yeniden adlandırın.
Varsayılan kodu aşağıdaki kodla değiştirin:
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)