Dönme nesneleri, 3D alan içinde bir veya daha fazla eksen etrafında dönen nesnelerdir. Roblox'un simülasyon motorunun yerleşik gücünü kullanarak, nesneleri döndürebilir ve oyunculara tanıdık ve sezgisel olan yerçekimi, aerodinamik ve sürtünme gibi gerçek dünya fizik davranışlarını taklit eden bir şekilde çevreleriyle etkileşime girmelerini sağlayabilirsiniz.
Spinning Objects .rbxl dosyasını referans alarak, bu eğitim, fiziksel kuvvetlerin Stüdyo'daki açısal hareketi nasıl etkilediğini açıklar ve oyunlarınızda farklı döndürme davranışlarıyla nesneleri döndürmek için çeşitli teknikler gösterir. Bu teknikler arasında şunlar bulunmaktadır:
- Tüm bir montajı sabit bir açısal hızda döndürmek için AngularVelocity mover kısıtlamasını kullanma.
- Montaj içindeki bir parçayı sabit bir açısal hızda döndürmek için HingeConstraint mekanik kısıtlamasını kullanma; montajın geri kalanı sabit kalır.
- ApplyAngularImpulse yöntemini kullanarak bir montaja açısal kuvvetin başlangıç darbesi ile döndürme; böylece montaj zamanla yavaşça yavaşlar.
Açısal hareket ve fiziksel kuvvetler
Roblox Stüdyo, gerçek zamanlı fizik davranışlarını taklit eden bir gerçek dünya simülasyon motorudur, bu nedenle oyunlardaki dönen nesnelerin davranışını tahmin etmek için, nesnelerin gerçek hayatta açısal hareketle nasıl döndüğüne dair yüksek seviyede bir anlayışa sahip olmak önemlidir.
Açısal hareket, veya döner hareket, sabit bir nokta veya eksen etrafında hareket etmektir. Örneğin, bir pervane açısal harekete sahip olduğunda, pervanenin ortasındaki döner eksen etrafında döner.

Açısal hareket, nesneleri döndürmek için dışsal fiziksel kuvvetlerin itmesi veya çekmesi olmadan var olamaz. Newton'un hareketin birinci yasası gereği, durgun nesneler durgun kalır ve hareket eden nesneler, dışsal bir kuvvet tarafından etkilenmedikçe sabit bir hızla hareket etmeye devam eder. Örneğin, durgun bir pervane, rüzgar gibi bir fiziksel kuvvet onu döndürmediği sürece durgun kalır.
Tork, nesneleri döndüren fiziksel kuvvetin ölçüsüdür ve nesnelerin açısal ivme kazanmasından sorumludur. Bu kavram, Stüdyo'da nesnelerin dönebilmesi için özellikle önemlidir; nesnelere uyguladığınız tork ne kadar fazla olursa, o kadar hızlı ivmelenebilirler.
Bu, torkun, nesneye karşı iten veya çeken herhangi bir yönlü fiziksel kuvvetten, örneğin yerçekimi veya sürtünmeden büyük olması gerektiği anlamına gelir. Örneğin, pervaneyi toprağa koyarsanız, rüzgarın fiziksel kuvvetinin, dönen pervaneyi hızlandırmaya devam etmek için topraktan gelen sürtünme miktarını aşması gerekir. Eğer rüzgarın kuvveti, topraktan gelen sürtünmeden çok daha büyük değilse, pervane hızlanır, ancak önceki örnekten daha yavaş.

Açısal hız, bir nesnenin dönüş hızının ölçüsüdür veya nesnenin sabit bir nokta veya eksen etrafında belirli bir süre içinde ne kadar hızlı döndüğüdür. Stüdyo, bir nesnenin saniyede kaç radyan döndüğünü ölçer. Bir dönüşte 2π radyan (6.283) vardır, bu nedenle bir nesnenin saniyede tam bir dönüş yapabilmesi için yaklaşık 6 radyan dönebilmesi için yeterli torka sahip olması gerekir. Açısal hızı anlamak, oyunlarınızda oyun tasarımı yaparken önemlidir çünkü dönen nesneleriniz için belirli bir ivmeyi elde etmek için ne kadar tork gerektiğini belirlemenize yardımcı olur.
Aşağıdaki bölümler, bu kavramları daha derinlemesine inceleyecek ve çevredeki herhangi bir karşıt fiziksel kuvveti aşmak için gerekli tork ile nesneleri sabit veya başlangıç açısal hızıyla döndürmeyi öğreneceksiniz. Bu fizik kavramlarını gelecek tekniklerle gözden geçirirken, Stüdyo'da ideal döndürme davranışını elde etmek için özellik değerlerini nasıl ayarlayacağınızı daha doğru bir şekilde tahmin edebilirsiniz.
Sabit bir açısal kuvveti koruma
Bir nesnenin sabit bir açısal hıza ulaşması ve bunu koruması için, nesnenin açısal hızını yavaşlatan veya nesnenin durgun kalmasına neden olan herhangi bir karşıt fiziksel kuvveti aşmak için bir açısal kuvvete ihtiyacı vardır. Örneğin, Stüdyo'da bir nesnenin [0, 12, 0] açısal hızına sahip olmasını istiyorsanız, nesnenin çevresinde Y ekseni boyunca 12 radyan/saniye hızında dönebilmesi için yeterli tork sağlamanız gerekir; bu da saniyede yaklaşık iki tam dönüş demektir.
Nesnelerinize uyguladığınız tork miktarı, yalnızca çevredeki karşıt fiziksel kuvvetlere, örneğin yerçekimi ve sürtünmeye değil, aynı zamanda nesnenin kendisine de bağlıdır. Örneğin, aynı eksen etrafında dönen aynı şekle sahip iki nesneniz varsa, daha büyük nesne, daha büyük bir eğilme momenti gerektirir; bu da aynı açısal ivmeyi elde etmek için daha fazla tork gerektirir.
Aşağıdaki alt bölümler, farklı şekil ve boyutlardaki montajları kullanarak, ya tüm bir nesneyi ya da yalnızca nesnenin bir kısmını döndürmeyi öğretir. Farklı özellik değerleriyle denemeler yaparken, kendi oyunlarınızda montajlar için ihtiyaç duyduğunuz maksimum tork miktarını tahmin etmeyi öğreneceksiniz.
Açısal Hız kısıtlamalarını kullanma
AngularVelocity nesneleri, sabit bir açısal hızı korumak için tüm bir montaja tork uygulayan bir mover kısıtlaması türüdür. Montajı döndürmeye başlamak için, AngularVelocity kısıtlamasının bilmesi gerekenler:
- Açısal kuvvet uygulamak için nokta ve pozitif veya negatif yön.
- Montajın saniyede ne kadar radyan döneceği.
- Montajın sabit bir açısal hıza ulaşabilmesi için motorun uygulayabileceği maksimum tork.
Bu süreci göstermek için, çalışma alanınıza bir blok ekleyeceksiniz ve bu bloğun döndürülmesi için bir AngularVelocity kısıtlamasının referans aldığı bir ek parça ekleyeceksiniz; bu blok, dünyanın Y ekseni boyunca sabit bir açısal hızda, yani saniyede 6 radyan dönecektir.

Ekleme ekleme
Bir montajı döndürmek için sabit bir nokta belirlemek için, montaja bir Attachment nesnesi ekleyebilir ve ardından eklemenin 3D alandaki konumunu yapılandırabilirsiniz. Örnek Dönme Nesneleri oyunu, kısıtlamanın parçayı kendisinin merkezinde saat yönünün tersine döndürmesi için bir blok parçasının ortasına bir ekleme yerleştirir.
Eklemler, döner eksenlerini görselleştirmenize yardımcı olacak görsel yardımcılar içerir. Sarı ok, eklemin birincil eksenini belirtirken, turuncu ok eklemin ikincil eksenini belirtir. Bu teknik adımlar sırasında döner eksenlerin hiçbiri bloğun dönüşünü etkilemese de, bu görsel yardımcıları gelecekteki referanslar için anlamak önemlidir çünkü HingeConstraint gibi farklı kısıtlamalar için ideal davranışları belirlemenize yardımcı olabilir.

Bir ekleme eklemek için:
Explorer penceresinde, Workspace'a bir blok parçası ekleyin.

Yeni parçaya bir ekleme ekleyin.
- Explorer penceresinde, parçanın üzerine gelin ve ⊕ butonuna tıklayın. Bir bağlam menüsü görüntülenir.
- Menüyü kullanarak bir Attachment ekleyin. Ekleme, parçanın ortasında görüntülenir.
- Eklemenin adını SpinAttachment olarak değiştirin.

Kısıtlamayı yapılandırma
Artık bloğunuzun döneceği sabit bir noktası olduğuna göre, AngularVelocity kısıtlamasının özelliklerini yapılandırarak döndürme yönünü, hedef sabit açısal hızı uygulamak için eksenleri, bloğun saniyede ne kadar radyan döneceğini ve motorun bloğun sabit bir açısal hıza ulaşabilmesi için uygulayabileceği maksimum torku belirtebilirsiniz.
Örnek Dönme Nesneleri oyunu, bloğu dünyanın Y ekseni boyunca sabit bir açısal hızda, yani saniyede 6 radyan döndürmek için 1000 Rowton-stud kadar sabit açısal kuvvet uygular. Rowton-stud, tork ölçmek için Roblox'un birincil fiziksel birimleridir. Roblox fiziksel birimlerini ve bunların metrik birimlere nasıl dönüştüğünü görmek için Roblox Birimleri sayfasına bakın.
AngularVelocity kısıtlamasını yapılandırmak için:
Kısıtlamanın döndürme 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.
Parçaya bir AngularVelocity kısıtlaması ekleyin.
- Explorer penceresinde, parçanın üzerine gelin ve ardından ⊕ simgesine tıklayın. Bir bağlam menüsü görüntülenir.
- Bağlam menüsünden AngularVelocity ekleyin. Kısıtlamanın görsel yardımı parçanın ortasında görüntülenir.
Parçanın eklemesini yeni kısıtlamaya atayın.
- Explorer penceresinde, kısıtlamayı seçin.
- Özellikler penceresinde,
- Attachment0'ı SpinAttachment olarak ayarlayın.
- AngularVelocity'yi 0, 6, 0 olarak ayarlayın; bu, parçayı Y ekseni boyunca saniyede 6 radyan döndürür. Bu özelliği 0, -6, 0 olarak ayarlarsanız, blok saat yönünde döner.
- MaxTorque'u 1000 olarak ayarlayın; bu, hedef açısal hıza ulaşmak için saniyede 1000 Rowton-stud kadar sabit açısal kuvvet uygular.
- RelativeTo'yu World olarak bırakın; bu, bloğu dünyanın konumuna ve yönüne göre döndürür.

Ayarladığınız tork miktarının bloğu dünyanın Y ekseni boyunca saniyede 6 radyan döndürdüğünü doğrulayın.
Mezzanin menüsünden Çalıştır simülasyon modunu seçin ve başlamak için Oyna butonuna tıklayın. Stüdyo, 3D alanda avatarınız olmadan mevcut kamera konumunda oyunu simüle eder.

Bloğunuzun ölçeğine ve çevrenizdeki herhangi bir karşıt fiziksel kuvvete bağlı olarak torkunuzu ayarlamanız gerekebilir. Örneğin, örnek oyundaki AngularVelocity kısıtlamasının özellikleri, düz bir platformda plastik malzemeye sahip 4, 1, 2 varsayılan boyutuna sahip bir blok parçası için çalışır ve klasik ön ayar yerçekimi ile bir ortamda geçerlidir.
Ancak, eğer bloğunuz daha büyük bir boyutta ve çim arazideyse, AngularVelocity.MaxTorque özelliğinizi artırmanız gerekir çünkü açısal kuvvet, hem bloğun kütlesini hem de çevreden gelen sürtünmeyi aşmak zorundadır. Örneğin, örneğin parçasının dört katı büyüklüğündeki büyük blok parçası, belirlenen açısal hızı elde etmek için en az 300000 Rowton-stud kadar sabit açısal kuvvet gerektirir!
HingeConstraint kısıtlamalarını kullanma
HingeConstraint nesneleri, iki eklemin bir eksen etrafında dönebilmesini sağlayan bir mekanik kısıtlama türüdür; bu, eklemleri aynı konumda ve birincil eksenleri aynı yönde kısıtlar. HingeConstraint.ActuatorType'ı Motor olarak ayarladığınızda, bu kısıtlama, iki ekleme tork uygular ve eklemlerin sabit bir açısal hıza ulaşmasını ve bunu korumasını hedefler.
Ayrıca, iki nesne içeren bir montaja eklemeler yerleştirdiğinizde, nesneler birbirine kilitlenir ve eklemin sabit birincil eksenine göre birlikte dönmeye çalışır. Bu nesnelerden birini sabitlerseniz, açısal kuvvet, montajın geri kalan kısmı sabit kalırken diğer nesneyi sabit bir açısal hızda döndürmeye devam eder.
Örneğin, bir montaj içindeki belirli bir nesneyi döndürmeye başlamak için, HingeConstraint kısıtlamasının bilmesi gerekenler:
- Eklemlerin üst üste gelmesini istediğiniz konum.
- Açısal kuvvet uygulamak için nokta ve pozitif veya negatif yön.
- Eklemin saniyede ne kadar radyan döneceği.
- Eklemin sabit bir açısal hıza ulaşabilmesi için motorun uygulayabileceği maksimum tork.
Bu süreci göstermek için, çalışma alanınıza iki nesne içeren bir pervane montajı ekleyeceksiniz; bu montajda her iki nesnede de HingeConstraint kısıtlamasının referans aldığı eklemeler bulunacak ve pervane, Y ekseni boyunca sabit bir açısal hızda 3 radyan dönecektir (saniyede yaklaşık yarım tam dönüş) ve pervanenin tabanı sabit kalacaktır.

Pervane varlığını alma
Yaratıcı Mağaza, projelerinizde kullanılmak üzere Roblox ve Roblox topluluğu tarafından oluşturulan tüm varlıkları bulmak için kullanabileceğiniz Araç Kutusu'nun bir sekmesidir; model, resim, mesh, ses, eklenti, video ve yazı tipi varlıkları dahil. Yaratıcı Mağaza'yı kullanarak bir bireysel varlığı veya varlık kütüphanesini doğrudan açık bir oyuna ekleyebilirsiniz.
Bu eğitim, HingeConstraint tekniği ile nesneleri döndürürken her adımı tekrarlarken kullanabileceğiniz bir pervane modeline atıfta bulunmaktadır. Bu pervane varlığını envanterinizden oyununuzda almak için:
Pervaneyi envanterinize ekleyin.
- Varlığın detaylar sayfasına gidin.
- Sağ üst köşede, Modeli Al butonuna tıklayın. Pervane varlığı artık envanterinizde ve platformdaki herhangi bir projede yeniden kullanabilirsiniz.
Stüdyo'da, Ana sekmesine gidin ve ardından Araç Kutusu butonuna tıklayın. Araç Kutusu penceresi açılır.

Araç Kutusu penceresinde, Envanter sekmesine tıklayın. Modellerim sıralaması görüntülenir.

Pervane karosuna tıklayın. Model, görünüm alanınızda görüntülenir.

Eklemleri yapılandırma
Montaj içindeki belirli bir nesneyi döndürmek için eklemlerin üst üste gelmesini istediğiniz konumu ve döner hareket yönünü belirlemek için montaja iki Attachment nesnesi ekleyebilir ve ardından bunların 3D alandaki hizalamasını ve yönünü yapılandırabilirsiniz.
Örnek Dönme Nesneleri oyunu, sabitlenmemiş pervanenin, sabitlenmiş tabanla üst üste geldiği konumun yakınında iki eklemeyi hizalar ve döner eksenlerinin birincil eksenini yukarıya doğru yönlendirir, böylece saat yönünün tersine dönerler. Bu örnekte, taban eklemi dönebilir çünkü taban sabitlenmiştir.
Hinge kısıtlaması için eklemeleri yapılandırmak için:
Head ve Base'e bir Attachment nesnesi ekleyin.
- Explorer penceresinde, Head'in üzerine gelin ve ⊕ butonuna tıklayın. Bir bağlam menüsü görüntülenir.
- Menüyü kullanarak bir Attachment ekleyin.
- Bu işlemi Base için tekrarlayın.
- Her iki eklemi de sırasıyla HeadAttachment ve BaseAttachment olarak yeniden adlandırın.

HeadAttachment ve BaseAttachment'ı döndürün, böylece her eklemin birincil ekseni Y ekseni boyunca yukarıya doğru işaret eder. Bu, Stüdyo'ya eklemleri saat yönünün tersine döndürmesini söyler.

BaseAttachment'ı Base'in üstüne ve HeadAttachment'ı Pervane'nin alt kenarına yerleştirin. Bu, Stüdyo'ya menteşenin kendisini nerede bağlayacağını ve her iki eklemi çalışma zamanında üst üste getireceğini söyler.

Kısıtlamayı yapılandırma
Artık eklemlerinizin üst üste gelmesi için bir konumu ve döner hareket yönü olduğuna göre, HingeConstraint kısıtlamasının özelliklerini yapılandırarak eklemin saniyede ne kadar radyan döneceğini ve eklemin sabit bir açısal hıza ulaşabilmesi için motorun uygulayabileceği maksimum torku belirtebilirsiniz.
Önceki teknikle benzer şekilde, örnek Dönme Nesneleri oyunu, eklemi Y ekseni boyunca sabit bir açısal hızda, yani saniyede 3 radyan döndürmek için 1000 Rowton-stud kadar sabit açısal kuvvet uygular. Ancak, taban eklemi sabitlenmiş bir nesnede olduğundan, yalnızca pervanenin eklemi dönebilir.
Bir menteşe kısıtlamasını yapılandırmak için:
Head'e bir HingeConstraint nesnesi ekleyin.
- Explorer penceresinde, Head'in üzerine gelin ve ardından ⊕ simgesine tıklayın. Bir bağlam menüsü görüntülenir.
- Bağlam menüsünden bir HingeConstraint ekleyin.
Pervanenin eklemlerini yeni kısıtlamaya atayın, böylece pervane sabitlenmiş tabana ilişkin döner.
- Explorer penceresinde, kısıtlamayı seçin.
- Özellikler penceresinde,
- Attachment0'ı BaseAttachment olarak ayarlayın.
- Attachment1'i HeadAttachment olarak ayarlayın. Menteşe görünüm alanında görüntülenir.

Explorer penceresinde, kısıtlamayı seçin, ardından Özellikler penceresinde,
- ActuatorType'ı Motor olarak ayarlayın. Yeni özellik alanları görüntülenir.
- MotorMaxTorque'u 1000 olarak ayarlayın; bu, hedef açısal hıza ulaşmak için saniyede 1000 Rowton-stud kadar sabit açısal kuvvet uygular.
- AngularVelocity'yi 3 olarak ayarlayın; bu, pervanenin başını saniyede 3 radyan döndürür.

Ayarladığınız tork miktarının pervaneyi Y ekseni boyunca saniyede 3 radyan döndürdüğünü doğrulayın.
Mezzanin menüsünden Çalıştır simülasyon modunu seçin ve başlamak için Oyna butonuna tıklayın. Stüdyo, 3D alanda avatarınız olmadan mevcut kamera konumunda oyunu simüle eder.

Başlangıç açısal kuvveti uygulama
Bir nesnenin açısal hızını değiştirmenin bir diğer yolu, açısal kuvvetin bir darbesini uygulamaktır. Açısal kuvvetin darbesinden sonra, nesne, sürtünme gibi bir karşıt kuvvet varsa durana kadar yavaşlar veya karşıt kuvvet yoksa sabit hızla hareket etmeye devam eder.
Bu teknik, oyunculara anlık geri bildirim sağladığı için, önemli bir oyun veya hava olayı sonrasında nesneleri döndürmek için kullanışlıdır; örneğin, güçlü bir rüzgar. Bu süreci göstermek için, aşağıdaki alt bölüm, başlangıçta rastgele bir açısal kuvvetle bir montajı döndürmeyi öğretir; bu değerleri kendi oyun gereksinimlerinize uyacak şekilde uyarlayabilirsiniz.
ApplyAngularImpulse kullanma
ApplyAngularImpulse yöntemi, bir montaja açısal hız elde etmek için tork uygular ve ardından durma noktasına yavaşlar. Montajı döndürmeye başlamak için, yöntemin bilmesi gerekenler:
- Döndürülecek montaj.
- Başlangıç açısal hızına ulaşmak için tork uygulamak için eksen.
- Her eksene uygulanacak tork miktarı.
Bu değerlerin tümünü bir betikte tanımlayabilirsiniz. Örneğin, örnek betik, döndürülecek montajı betiğin ebeveyni olarak tanımlar ve ardından Y ekseninde 0 ile 100 Rowton-stud arasında rastgele bir açısal kuvvet darbesi uygular.
ApplyAngularImpulse kullanarak bir montajı döndürmek için:
Workspace'a bir küre parçası ekleyin. Örnek, kürenin hareketini net bir şekilde görselleştirebilmeniz için bir MaterialVariant ile bir küre kullanır.

Yeni parçaya bir betik ekleyin.
- Explorer penceresinde, 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.
Varsayılan kodu aşağıdaki kod ile değiştirin:
local part = script.Parent
local impulse = Vector3.new(0, math.random(0, 100), 0)
part:ApplyAngularImpulse(impulse)