DragDetector

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

The DragDetector örneği, kapıları ve düzgünleri açmak, bir parçayı kaydırmak ve çok daha fazlası gibi deneyimde 3B nesnelerle etkileşimi kolaylaştırır ve teşvik eder.Önemli özellikler şunları içerir:

  • Tüm girişler (fare, dokunma, oyun konsolu ve VR) üzerinden sürüklenebilir hale getirmek için herhangi bir veya altına bir yerleştirin, tek bir kod satırı olmadan.

  • Birkaç seçeneği arasından seçim yapın, nesnenin harekete nasıl yanıt verdiğini tanımlayın ve isteğe bağlı olarak eksen veya hareket sınırları uygulayın.

  • Scriptler, kaydırılan nesnelerin manipülasyonuna yanıt vererek UI'yi sürebilir veya bir odaya göre kaydırma duvar anahtarı dimerine dayalı olarak ışık seviyesini ayarlayarak mantıksal kararlar verebilir.

  • Oyuncular sabitlenmiş parçaları veya modelleri manipüle edebilir ve serbest bırakırken koyduğunuz yerde kalacaklar.

  • DragDetectors çalışma, kullanmıyorsanız Seç , Hareket , Ölçek veya Döndür araçlarını kullanarak, düzenlerken sürüklenebilir nesneleri test etmenizi ve ayarlamanızı kolaylaştırarak daha kolay test edilmesini sağlar.

Detaylar ve kullanım örnekleri için 3B Sürükleme Dedektörleri rehberine bakın.

Özet

Özellikler

Şuradan alınan Özellikler: ClickDetector

Yöntemler

Etkinlikler

Şuradan alınan Etkinlikler: ClickDetector

Özellikler

ActivatedCursorIcon

ContentId
Paralel oku

Fare bu DragDetector 'in ebeveyni üzerinde etkinleştirildiğinde görüntülenmesi için mouse ikonunu ayarlar.Bu özellik boş bırakılırsa, dedektör varsayılan simgekullanacaktır.

Aktifleştirilmiş kursör simgesini değiştirmek için, bu özelliği kullanmak istediğiniz görüntünün varlık kimliğine ayarlayın.

ApplyAtCenterOfMass

Paralel oku

Yanlış (Varsayılan) olduğunda, kısıtlayıcı güç, kullanıcının tıkladığı noktada uygulanır.Gerçek olduğunda, kuvvet nesnenin kütle merkezine uygulanır.Sadece eğer ve ebeveyn nesne sabit değilse önemlidir.

Çoğaltılmamış
Paralel oku

Referans çerçevesine göre ifade edilen hareket ekseninin birincil eksen.Bir DragStyle için Enum.DragDetectorDragStyle.TranslateLine , çevirinin yönü; Enum.DragDetectorDragStyle.TranslatePlane için, hareket uçağına normal; Enum.DragDetectorDragStyle.RotateAxis için, 1D dönüş ekseninin eksenini.Bu değeri otomatik olarak değiştirmek Orientation ve tersine günceller.

DragFrame

Paralel oku

Eğer ReferenceInstance ayarlaedilirse, referans çerçevesiyle ilgili CFrame pivot; aksi takdirde, pivotun sürüklemenin başlangıcındaki çerçevesiyle ilgili CFrame pivotu.

Paralel oku

Önerilen hareket üretmek için kullanılan paradigma, bir akış cursor ışınları verildiğinde görünür. Seçenekler için bakın Enum.DragDetectorDragStyle .

Enabled

Paralel oku

Doğruysa, DragDetector kullanıcı girişine yanıt verir; yanlışsa, yapmaz.

GamepadModeSwitchKeyCode

Paralel oku

Oyun kumandası girişi sırasında, hareket modunun ikincil moduna geçiş için Enum.KeyCode .Sadece kaydırma dedektörünün DragStyle 'inin hem birincil hem de ikincil hareket moduna sahip olduğu durumlarda geçerlidir.

KeyboardModeSwitchKeyCode

Paralel oku

Klavye girişi sırasında, hareket modunun ikincil moduna geçiş için Enum.KeyCode .Sadece kaydırma dedektörünün DragStyle 'inin hem birincil hem de ikincil hareket moduna sahip olduğu durumlarda geçerlidir.

MaxDragAngle

Paralel oku

Bu MinDragAngle dan daha büyükse, çeviri o aralık içinde kısılacaktır.

Bu bir kısıtlama değildir; sınırlar içinde kalmak için sadece hareket üretme girişimlerini engeller.Bir sürüklemeye özel kısıt eklemek için AddConstraintFunction() bakın.

Sadece önemli if DragStyle is Enum.DragDetectorDragStyle.RotateAxis .

MaxDragTranslation

Paralel oku

Herhangi bir boyutta, bu MinDragTranslation dan daha büyükse, çeviri o aralık içinde sıkıştırılacaktır.

Bu bir kısıtlama değildir; sınırlar içinde kalmak için sadece hareket üretme girişimlerini engeller.Bir sürüklemeye özel kısıt eklemek için AddConstraintFunction() bakın.

MaxForce

Paralel oku

Nesneye hedefe ulaşmak için uygulanan maksimum kuvvet. Sadece önemli eğer ResponseStyle``Enum.DragDetectorResponseStyle.Physical ve ebeveyn nesne sabit değilse.

MaxTorque

Paralel oku

Nesneye hedefe ulaşması için uygulanan maksimum tork. Sadece önemli eğer ResponseStyle``Enum.DragDetectorResponseStyle.Physical ve ebeveyn nesne sabit değilse.

MinDragAngle

Paralel oku

Eğer bu MaxDragAngle , çeviri o aralık içinde kısılacaktır.

Bu bir kısıtlama değildir; sınırlar içinde kalmak için sadece hareket üretme girişimlerini engeller.Bir sürüklemeye özel kısıt eklemek için AddConstraintFunction() bakın.

Sadece önemli if DragStyle is Enum.DragDetectorDragStyle.RotateAxis .

MinDragTranslation

Paralel oku

Herhangi bir boyutta, eğer bu MaxDragTranslation dan daha az ise, çeviri o aralığa sıkıştırılacaktır.

Bu bir kısıtlama değildir; sınırlar içinde kalmak için sadece hareket üretme girişimlerini engeller.Bir sürüklemeye özel kısıt eklemek için AddConstraintFunction() bakın.

Orientation

Paralel oku

Referans çerçevesiyle ilgili hareket eksenlerinin YXZ dönüşünü belirtir (referans çerçevenin kendi yönünü değiştirmez).Lineer çevirme ve eksenel dönüş bu yeniden yönlendirilmiş Y ekseninde olacak ve XZ ekseninde plano tercümesi.Bu değeri otomatik olarak değiştirmek Axis ve tersine günceller.

Paralel oku

Oyuncuların DragDetector ile etkileşime girebileceği izin seviyesini kontrol eder. Varsayılan değer Enum.DragDetectorPermissionPolicy.Everybody dir.

ReferenceInstance

Paralel oku

CFrame referans çerçevesi sürükleme dedektörü için olan bir örnek. Bir örnek whose referans çerçevesi sürükleme dedektörü için.The DragFrame bu CFrame ile ilişkilendirilir ve GetReferenceFrame() yöntemi aracılığıyla alınabilir.

Bu örnek bir PVInstance ise, referans çerçevesi onun merkezi olacaktır; eğer bir Attachment ise, dünyası da onun olacaktır CFrame .Eğer nil ya da öncekilerden hiçbiri değilse, referans çerçevesi, sürükleyici dedektörün ebeveyninin BasePart veya Model pivotuna dayanacaktır.

Paralel oku

Önerilen hareket hesaplandıktan ve potansiyel olarak sınırlandıktan sonra, DragDetector tarafından etkilenen nesneleri hareket ettirmek veya hareket etmemek için kullanılan paradigma budur.Seçenekler için Enum.DragDetectorResponseStyle bakın.

Responsiveness

Paralel oku

Daha yüksek değerler, nesnenin hedefine daha hızlı ulaşmasını sağlar. Sadece eğer ve ebeveyn nesne sabit değilse önemlidir.

RunLocally

Paralel oku

Eğer yanlışsa (Varsayılan), istemci cursor ışınlarını işleyen sunucuya ( DragStart , DragContinue , DragEnd ) gönderir ve veri modeline değişiklik yapar ve bunları istemcilere yönlendirerek yeniden yapar.

Eğer doğruysa, istemci bu sinyalleri kendisi işler ve onları sunucuya yeniden yazmaz.Müşteri LocalScripts bu olaylara yanıt vermek ve RemoteEvents sunucuya yansıtılması gereken herhangi bir değişikliği göndermek için kullanılabilir.

SecondaryAxis

Çoğaltılmamış
Paralel oku

Hareketin ikincil eksen. Aynı paradigmayı kullanarak yönlendirme ile ilgilidir Attachments .

TrackballRadialPullFactor

Paralel oku

Kurma işaretinin dışında olduğunda, DragDetector yuvarlak bir çekme dönüşü uygulayabilir ve top, tıpkı yuvarlanmaya çalışıyormuş gibi kurma işaretine dönüşür.Bu özellik, bu dönüşü toplama olarak eklemek için 0 ile 1 çarpanıdır.Sadece önemli if DragStyle is Enum.DragDetectorDragStyle.RotateTrackball .

TrackballRollFactor

Paralel oku

Kurma işaretleyici pencereden dışarıda olduğunda, DragDetector topu görüntüye bakan bir vinil kayıt üzerine monte edilmiş gibi döndüren bir rulo dönüşü uygulayabilir.Bu özellik, bu rulo dönüşünü toplamaya eklemek için 0 ile 1 çarpanıdır.Sadece önemli if DragStyle is Enum.DragDetectorDragStyle.RotateTrackball .

VRSwitchKeyCode

Paralel oku

VR girişi sırasında, ikincil hareket modunu değiştirmek için Enum.KeyCode .Sadece kaydırma dedektörünün DragStyle 'inin hem birincil hem de ikincil hareket moduna sahip olduğu durumlarda geçerlidir.

WorldAxis

Çoğaltılmamış
Paralel oku

Dünya uzayında ifade edilen Axis . Aynı paradigmayı kullanarak yönlendirme ile ilgilidir Attachments .

WorldSecondaryAxis

Çoğaltılmamış
Paralel oku

Dünya uzayında ifade edilen SecondaryAxis . Aynı paradigmayı kullanarak yönlendirme ile ilgilidir Attachments .

Yöntemler

AddConstraintFunction

Önerilen hareketi değiştirmek veya sınırlandırmak için bir işlev ekler.İşlev, önerilen hareketin bir giriş alır ve değiştirilmiş veya değiştirilmemiş hareketin bir kısmını döndürür.Hem giriş hem de çıkış, referans çerçevesiyle ilişkilendirilir.priority sırayla çağrılacak birden fazla işlev ekleyebilirsiniz, sonuçları bir zincir boyunca geçirerek.

Eklendi bir kısıtlayıcı işlevi kaldırmak için, döndürülen bağlantı nesnesine Disconnect() çağrınız.

Parametreler

priority: number

Bu yöntem aracılığıyla eklenen işlevlerin öncelik sırası. Daha yüksek değerler daha düşük değerlerden önceliklidir.

Varsayılan değer: ""
function: function

Önerilen hareketi değiştirmek veya sınırlamak için işlev.Bu işlev bir giriş alır CFrame önerilen hareket ve bir CFrame değiştirilmiş veya değiştirilmemiş hareket geri döndürür, her ikisi de referans çerçevesiyle ilgili.

Varsayılan değer: ""

Dönüşler

Kısıtlama işlevini kaldırmak için bu bağlantı nesnesini kullanın.

GetReferenceFrame

Hareketin ifade edildiği referansı CFrame döndürür; daha fazla ayrıntı için ReferenceInstance özelliğine bakın.


Dönüşler

Hareket ifade edilen referans CFrame .

RestartDrag

()

Yeni parametler kullanılarak sürüklemeyi yeniden başlatmak için bir senaryodan çağrılabilir, eğer DragStyle , Axis veya SecondaryAxis değişirse parametler.


Dönüşler

()

SetDragStyleFunction

()

DragStyle ayarlanırsa ve sadece Enum.DragDetectorDragStyle.Scriptable kullanılacak bir işlev geçer.Verdiğiniz işlev, bir DragContinue sinyaline yanıt verirken çağrılır, sinyalin dünya uzayı kurma ışınını Ray ile alır ve dünya uzayındaki pivotun istediği konum ve yönünü içeren bir CFrame döndürür.

Eğer işlev nil döndürürse, nesne taşınmayacaktır.Bu, senaryo doğru cevabı vermek için henüz tüm bilgileri toplamadıysa veya nesnenin olduğu yerde kalmasını istediğiniz geçici durumlarda yararlıdır.

Parametreler

function: function

DragContinue sinyalleri.Bu işlev, sinyalin dünya uzayı kurma ışınını alır ve dünya uzayındaki pivotun istediği konumunu ve yönünü içeren bir CFrame döndürür.Bu işlev nil dönerse, nesne taşınmayacaktır.

Varsayılan değer: ""

Dönüşler

()

SetPermissionPolicyFunction

()

PermissionPolicy ayarlanırsa ve sadece Enum.DragDetectorPermissionPolicy.Scriptable kullanılacak bir işlev geçer.Verilen işlev, belirli bir oyuncu için dedektörü etkinleştirmek/devre dışı bırakmak için bir Player parametresi kabul eder.Ayrıca, hangi özel part parçasının tıklandığını gösteren bir BasePart parametresi alır, örneğin kaydırılabilir Model içinde bir parça üzerine tıklanır; bu, o parçanın Name , Color , HasTag() değerine veya diğer detaylara dayalı olarak dedektörü etkinleştirmek/devre dışı bırakmak için kullanışlıdır.


local dragDetector = script.Parent.DragDetector
dragDetector.PermissionPolicy = Enum.DragDetectorPermissionPolicy.Scriptable
dragDetector:SetPermissionPolicyFunction(function(player, part)
if player and player:GetAttribute("IsInTurn") then
return true
elseif part and not part:GetAttribute("IsDraggable") then
return false
else
return true
end
end)

Parametreler

function: function

Dedektörün etkileşimliliğini ayarlamak için işlev.Bu işlev, belirli bir oyuncu için dedektörü etkinleştirmek/devre dışı bırakmak için bir Player parametresi kabul eder.Ayrıca, hangi özel BasePart parçasının tıklandığını gösteren bir part parametresi alır, örneğin sürüklenebilir bir Model içinde bir parça üzerine tıklanmış; bu, o parçanın Name , Color , HasTag() değerine veya diğer detaylara dayalı olarak dedektörü etkinleştirmek/devre dışı bırakmak için kullanışlıdır.

Varsayılan değer: ""

Dönüşler

()

Etkinlikler

DragContinue

Bir kullanıcı, DragStart başlatıldıktan sonra nesneyi sürüklemeyi sürdürdüğünde ateş eder.

Parametreler

playerWhoDragged: Player

Sürüklemeyi başlatan Player kişi, DragStart aracılığıyla sürüklemeyi sürdürüyor ve şimdi sürüklemeyi sürdürüyor.

cursorRay: Ray

Ray cursor'dan gelen, sahneye yönelik olan.

viewFrame: CFrame

CFrame kullanıcının Camera 'sı.

vrInputFrame: OptionalCoordinateFrame

Bir VR giriş cihazı kullanıyorsanız, el tutan kurör/işaretleyici/kontrolörün CFrame 'si.

isModeSwitchKeyDown: boolean

Sürükleme dedektörünün DragStyle 'inin hem birincil hem de ikincil hareket modu varsa, bu parametre kullanıcının KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode veya VRSwitchKeyCode aracılığıyla tanımlanan modifiye girişine basıp basmadığını gösterir.


DragEnd

Bir kullanıcı nesneyi sürüklemeyi bıraktığında ateş eder.

Parametreler

playerWhoDragged: Player

Sürüklemeyi başlatan Player kişi, DragStart aracılığıyla sürüklemeyi bitirdi (serbest bırakıldı) ve şimdi bitirdi.


DragStart

Bir kullanıcı nesneyi sürüklemeye başladığında ateş eder.

Parametreler

playerWhoDragged: Player

Player kim sürüklemeyi başlattı.

cursorRay: Ray

Ray cursor'dan gelen, sahneye yönelik olan.

viewFrame: CFrame

CFrame kullanıcının Camera 'sı.

hitFrame: CFrame

Sürüklemeyi başlatan cursor raycast'ın vuruş çerçevesi.

clickedPart: BasePart

Sürüklemeyi başlatan kurör ışını tarafından vurulan parça.

vrInputFrame: OptionalCoordinateFrame

Bir VR giriş cihazı kullanıyorsanız, el tutan kurör/işaretleyici/kontrolörün CFrame 'si.

isModeSwitchKeyDown: boolean

Sürükleme dedektörünün DragStyle 'inin hem birincil hem de ikincil hareket modu varsa, bu parametre kullanıcının KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode veya VRSwitchKeyCode aracılığıyla tanımlanan modifiye girişine basıp basmadığını gösterir.