DragDetector
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Instansi DragDetector memudahkan dan mendorong interaksi dengan objek 3D dalam pengalaman, seperti membuka pintu dan laci, menylipkan bagian, dan banyak lagi.Fitur kunci termasuk:
Tempatkan DragDetector di bawah apa pun BasePart atau Model untuk membuatnya dapat diseret melalui semua input (mouse, sentuh, gamepad, dan VR), semua tanpa satu baris kode.
Pilih dari beberapa opsi DragStyle , definisikan bagaimana objek menanggapi gerakan melalui ResponseStyle , dan secara opsional terapkan batas sumbu atau gerakan.
Skrip dapat menanggapi manipulasi objek yang diseret untuk mengemudikan UI atau membuat keputusan logis, seperti menyesuaikan tingkat cahaya di sebuah ruang berdasarkan sakelar dinding geser dimmer.
Pemain dapat memanipulasi bagian atau model terikat dan mereka akan tetap tepat di tempat Anda menempatkannya saat dirilis.
DragDetectors bekerja di Studio selama Anda tidak menggunakan Pilih , Pindahkan , Skala , atau Putar alat, sehingga lebih mudah untuk menguji dan menyesuaikan objek yang dapat diseret saat diedit.
Lihat panduan Detektor Drag 3D untuk rincian dan contoh penggunaan.
Rangkuman
Properti
Atur ikon kursor untuk ditampilkan saat mouse diaktifkan di atas orangtua dari ini DragDetector .
Apakah kontraksi kekuatan diterapkan ke pusat massa objek.
L sumbu gerakan utama, diekspresikan relatif terhadap frame referensi.
The CFrame dari pivot, tergantung pada detektor seretan ReferenceInstance .
Paradigma yang digunakan untuk menghasilkan gerakan yang diusulkan.
Apakah DragDetector merespon masukan pengguna.
Selama masukan gamepad, modifikator Enum.KeyCode untuk mode gerakan sekunder.
Selama masukan keyboard, modifikator Enum.KeyCode untuk mode gerakan sekunder.
Bersama dengan MinDragAngle, mengganggu upaya detektor gerakan untuk menghasilkan gerakan.
Bersama dengan MinDragTranslation, mengganggu upaya detektor gerakan untuk menghasilkan gerakan.
Kekuatan maksimum yang diterapkan untuk objek untuk mencapai tujuannya.
Torsi maksimum yang diterapkan untuk objek untuk mencapai tujuannya.
Bersama dengan MaxDragAngle, mengganggu upaya detektor gerakan untuk menghasilkan gerakan.
Bersama dengan MaxDragTranslation, mengganggu upaya detektor gerakan untuk menghasilkan gerakan.
Mengidentifikasi rotasi YXZ sumbu gerakan relatif terhadap frame referensi.
Mengontrol tingkat izin di mana pemain dapat berinteraksi dengan DragDetector.
Sebuah instansi yang CFrame adalah frame referensi untuk detektor seretan
Paradigma yang digunakan untuk bergerak, atau tidak bergerak, objek yang dipengaruhi oleh detektor seret.
Nilai lebih tinggi menyebabkan objek mencapai tujuannya lebih cepat.
Apakah pengguna memasukkan input pada DragDetector replik ke server atau tetap lokal ke klien tertentu.
L sumbu sekunder dari gerakan.
Jika DragStyle adalah Enum.DragDetectorDragStyle.RotateTrackball , pengganda untuk menambahkan rotasi tarik radial sebagai kontribusi ke total.
Jika DragStyle adalah Enum.DragDetectorDragStyle.RotateTrackball , pengganda untuk menambahkan rotasi gulungan ke total.
Selama masukan VR, modifikator Enum.KeyCode untuk mode gerakan sekunder.
The Axis yang dinyatakan di ruang dunia.
The SecondaryAxis yang dinyatakan di ruang dunia.
Atur ikon kursor untuk ditampilkan saat mouse di atas orangtua ini ClickDetector atau DragDetector .
Jarak maksimum antara karakter dan ClickDetector atau DragDetector untuk pemain dapat berinteraksi dengannya.
Metode
Menambahkan fungsi untuk memodifikasi atau membatasi gerakan yang diusulkan.
Kembalikan referensi CFrame di mana gerakan dinyatakan.
Dapat diaktifkan dari skrip untuk memulai ulang seretan menggunakan parameter baru.
Melewati fungsi yang akan digunakan jika dan hanya jika DragStyle diatur ke Enum.DragDetectorDragStyle.Scriptable.
Melewati fungsi yang akan digunakan jika dan hanya jika PermissionPolicy diatur ke Enum.DragDetectorPermissionPolicy.Scriptable.
Acara
- DragContinue(playerWhoDragged : Player,cursorRay : Ray,viewFrame : CFrame,vrInputFrame : OptionalCoordinateFrame,isModeSwitchKeyDown : boolean):RBXScriptSignal
Melepaskan api saat pengguna melanjutkan menyeret objek setelah DragStart telah diinisialisasi.
Melepaskan api saat pengguna berhenti menyeret objek.
Melepaskan api saat pengguna mulai menyeret objek.
Melepaskan api saat pemain berinteraksi dengan orangtua dari ClickDetector atau DragDetector .
Melepaskan api saat orangtua dari ClickDetector atau DragDetector terisi oleh pemain.
Memicu ketika kursor pemain berada di luar orang tua dari ClickDetector atau DragDetector .
Melepaskan api saat pemain mengklik kanan mouse cursor mereka di ClickDetector atau DragDetector.
Properti
ActivatedCursorIcon
Atur ikon kursor untuk ditampilkan saat mouse diaktifkan di atas orangtua dari ini DragDetector .Jika properti ini dibiarkan kosong, detektor akan menggunakan ikon default.
Untuk mengubah ikon kursor yang diaktif, atur properti ini ke ID aset gambar yang ingin Anda gunakan.
ApplyAtCenterOfMass
Ketika palsu (default), kekuatan batas diterapkan pada titik di mana pengguna mengklik.Ketika benar, kekuatan diterapkan di pusat massa objek.Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orangtua tidak terikat.
Axis
L sumbu gerakan utama, diekspresikan relatif terhadap frame referensi.Untuk sebuah DragStyle dari Enum.DragDetectorDragStyle.TranslateLine , arah terjemahan; untuk Enum.DragDetectorDragStyle.TranslatePlane , normal ke bidang gerakan; untuk Enum.DragDetectorDragStyle.RotateAxis , sumbu rotasi 1D.Mengubah nilai ini secara otomatis memperbarui Orientation dan sebaliknya.
DragFrame
Jika ReferenceInstance diatur, CFrame pivot relatif terhadap frame referensi; jika tidak, CFrame pivot relatif terhadap frame-nya di awal seretan.
DragStyle
Paradigma yang digunakan untuk menghasilkan gerakan yang diusulkan, dengan memberikan aliran sinar kurursor. Lihat Enum.DragDetectorDragStyle untuk opsi.
GamepadModeSwitchKeyCode
Selama masukan gamepad, Enum.KeyCode untuk menyalakan mode gerakan sekunder.Hanya berlaku jika detektor seret memiliki DragStyle mode gerakan primer dan sekunder.
KeyboardModeSwitchKeyCode
Selama masukan keyboard, Enum.KeyCode untuk menyalakan mode gerakan sekunder.Hanya berlaku jika detektor seret memiliki DragStyle mode gerakan primer dan sekunder.
MaxDragAngle
Jika ini lebih besar dari MinDragAngle, terjemahan akan dibatasi dalam rentang itu.
Ini bukan batasan; itu hanya menghalangi upaya detektor gerakan untuk menghasilkan gerakan agar tetap berada dalam batas.Lihat AddConstraintFunction() untuk menambahkan batasan khusus ke seretan.
Hanya relevan jika DragStyle adalah Enum.DragDetectorDragStyle.RotateAxis.
MaxDragTranslation
Di dimensi mana pun, jika ini lebih besar dari MinDragTranslation, terjemahan akan dibatasi dalam rentang itu.
Ini bukan batasan; itu hanya menghalangi upaya detektor gerakan untuk menghasilkan gerakan agar tetap berada dalam batas.Lihat AddConstraintFunction() untuk menambahkan batasan khusus ke seretan.
MaxForce
Kekuatan maksimum yang diterapkan untuk objek untuk mencapai tujuannya. Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orangtua tidak terikat.
MaxTorque
Torsi maksimum yang diterapkan untuk objek untuk mencapai tujuannya. Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orang tua tidak terpasang.
MinDragAngle
Jika ini kurang dari MaxDragAngle, terjemahan akan dibatasi dalam rentang itu.
Ini bukan batasan; itu hanya menghalangi upaya detektor gerakan untuk menghasilkan gerakan agar tetap berada dalam batas.Lihat AddConstraintFunction() untuk menambahkan batasan khusus ke seretan.
Hanya relevan jika DragStyle adalah Enum.DragDetectorDragStyle.RotateAxis.
MinDragTranslation
Di dimensi mana pun, jika ini kurang dari MaxDragTranslation, terjemahan akan dibatasi dalam rentang itu.
Ini bukan batasan; itu hanya menghalangi upaya detektor gerakan untuk menghasilkan gerakan agar tetap berada dalam batas.Lihat AddConstraintFunction() untuk menambahkan batasan khusus ke seretan.
Orientation
Menentukan rotasi YXZ sumbu gerakan relatif terhadap frame referensi (tidak mengubah orientasi frame referensi itu sendiri).Terjemahan linier dan rotasi sumbu akan berada di sumbu reorientasi ini Y , dan terjemahan datar di plane XZ .Mengubah nilai ini secara otomatis memperbarui Axis dan sebaliknya.
PermissionPolicy
Mengontrol tingkat izin di mana pemain dapat berinteraksi dengan DragDetector . Default adalah Enum.DragDetectorPermissionPolicy.Everybody .
ReferenceInstance
Sebuah instansi yang CFrame adalah frame referensi untuk detektor seretanThe DragFrame diungkapkan relatif terhadap ini CFrame yang dapat diambil melalui metode GetReferenceFrame() .
Jika instansi ini adalah PVInstance , frame referensi akan menjadi pivotnya; jika Attachment , maka dunianya adalah CFrame .Jika itu adalah nil atau tidak satu pun dari sebelumnya, frame referensi akan didasarkan pada pivot dari orang tua detektor seret BasePart atau Model .
ResponseStyle
Setelah gerakan yang diusulkan telah dihitung dan mungkin dibatasi, ini adalah paradigma yang digunakan untuk memindahkan, atau tidak memindahkan, objek yang dipengaruhi oleh DragDetector.Lihat Enum.DragDetectorResponseStyle untuk opsi.
Responsiveness
Nilai yang lebih tinggi menyebabkan objek mencapai tujuannya lebih cepat. Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orangtua tidak terikat.
RunLocally
Jika palsu (默认), klien mengirim sinyal duplikat ( DragStart , DragContinue , DragEnd ) ke server yang memproses ray kurator, membuat perubahan pada model data, dan mereplikasikannya ke klien.
Jika benar, klien memproses sinyal-sinyal itu sendiri dan tidak menyalinnya ke server.Klien LocalScripts dapat digunakan untuk menanggapi peristiwa ini dan RemoteEvents dapat digunakan untuk mengirim perubahan apa pun yang harus disalin ke server.
SecondaryAxis
L sumbu sekunder dari gerakan. Berhubungan dengan orientasi menggunakan paradigma yang sama seperti Attachments .
TrackballRadialPullFactor
Ketika kursor berada di luar trackball, DragDetector dapat menerapkan rotasi tarik radial yang mengubah bola seolah-olah mencoba memutar ke arah kurator.Properti ini adalah pengganda 0 hingga 1 untuk menambahkan rotasi tersebut sebagai kontribusi ke total.Hanya relevan jika DragStyle adalah Enum.DragDetectorDragStyle.RotateTrackball.
TrackballRollFactor
Ketika kursor berada di luar trackball, DragDetector dapat menerapkan rotasi gulir yang mengubah bola seolah-olah dipasang di rekaman vinil yang menghadap pemirsa.Properti ini adalah pengganda 0 hingga 1 untuk menambahkan rotasi gulungan itu ke total.Hanya relevan jika DragStyle adalah Enum.DragDetectorDragStyle.RotateTrackball.
VRSwitchKeyCode
Selama masukan VR, Enum.KeyCode untuk menyalakan mode gerakan sekunder.Hanya berlaku jika detektor seret memiliki DragStyle mode gerakan primer dan sekunder.
WorldAxis
The Axis yang dinyatakan di ruang dunia. Berhubungan dengan orientasi menggunakan paradigma yang sama dengan Attachments .
WorldSecondaryAxis
The SecondaryAxis yang dinyatakan di ruang dunia. Berhubungan dengan orientasi menggunakan paradigma yang sama dengan Attachments .
Metode
AddConstraintFunction
Menambahkan fungsi untuk memodifikasi atau membatasi gerakan yang diusulkan.Fungsi mengambil input CFrame dari proposal gerakan dan kembalikan CFrame dari diubah atau tidak diubah gerakan.Baik input dan output diungkapkan relatif terhadap frame referensi.Anda dapat menambahkan beberapa fungsi yang akan dipanggil dalam urutan oleh priority , melewati hasil di sepanjang rantai.
Untuk menghapus fungsi batasan tambahan, panggil Disconnect() pada objek koneksi yang dikembalikan.
Parameter
Urutan prioritas untuk fungsi yang ditambahkan melalui metode ini. Nilai yang lebih tinggi memiliki prioritas lebih tinggi dari nilai yang lebih rendah.
Memberikan nilai
Gunakan objek koneksi ini untuk menghapus fungsi batasan.
GetReferenceFrame
Kembalikan referensi CFrame di mana gerakan dinyatakan; lihat properti ReferenceInstance untuk lebih banyak rincian.
Memberikan nilai
RestartDrag
Dapat diaktifkan dari skrip untuk memulai ulang seretan menggunakan parameter baru, jika parameter seperti DragStyle , Axis , atau SecondaryAxis berubah.
Memberikan nilai
SetDragStyleFunction
Melewati fungsi yang akan digunakan jika dan hanya jika DragStyle diatur ke Enum.DragDetectorDragStyle.Scriptable.Fungsi yang diberikan dipanggil saat menanggapi sinyal DragContinue , menerima kurikulum ruang dunia sinyal dengan jenis Ray , dan ia kembali mengembalikan sinyal CFrame yang berisi lokasi dan orientasi pivot di ruang dunia.
Jika fungsi mengembalikan nil, objek tidak akan dipindahkan.Ini berguna jika skrip belum mengumpulkan semua informasi yang dibutuhkannya untuk memberikan jawaban yang benar, atau dalam kasus sementara di mana Anda ingin objek tetap di tempatnya.
Parameter
Fungsi untuk memantau sinyal DragContinue .Fungsi ini menerima ray kurikuler ruang dunia sinyal dan itu kembali menghasilkan CFrame berisi lokasi dan orientasi pivot di ruang dunia yang diinginkan.Jika fungsi ini kembali nil , objek tidak akan dipindahkan.
Memberikan nilai
SetPermissionPolicyFunction
Melewati fungsi yang akan digunakan jika dan hanya jika PermissionPolicy diatur ke Enum.DragDetectorPermissionPolicy.Scriptable.Fungsi yang diberikan menerima parameter Player untuk mengaktifkan/menonaktifkan detektor untuk pemain tertentu.Ia juga menerima parameter part yang menunjukkan mana spesifik BasePart yang diklik, seperti satu bagian dalam draggable Model ; ini berguna untuk mengaktifkan/menonaktifkan detektor berdasarkan nilai Name , Color , HasTag() , atau rincian lainnya.
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)
Parameter
Fungsi untuk mengatur interaktivitas detektor.Fungsi ini menerima parameter Player untuk mengaktifkan/menonaktifkan detektor untuk pemain tertentu.Ini juga menerima parameter part yang menunjukkan mana spesifik BasePart yang diklik, seperti satu bagian dalam draggable Model ; ini berguna untuk mengaktifkan/menonaktifkan detektor berdasarkan nilai Name , Color , HasTag() , atau rincian lainnya.
Memberikan nilai
Acara
DragContinue
Melepaskan api saat pengguna melanjutkan menyeret objek setelah DragStart telah diinisialisasi.
Parameter
Jika menggunakan perangkat input VR, CFrame dari tangan yang memegang kursor/penunjuk/kontroler.
Jika detektor seret memiliki mode gerakan utama dan sekunder, parameter ini menunjukkan apakah pengguna menekan input modifikator yang didefinisikan melalui , , atau .
DragEnd
Melepaskan api saat pengguna berhenti menyeret objek.
Parameter
DragStart
Melepaskan api saat pengguna mulai menyeret objek.
Parameter
Frame pukul dari raycast kurator yang memulai seretan.
Bagian yang dipukul oleh raycast kurursor yang memulai seretan.
Jika menggunakan perangkat input VR, CFrame dari tangan yang memegang kursor/penunjuk/kontroler.
Jika detektor seret memiliki mode gerakan utama dan sekunder, parameter ini menunjukkan apakah pengguna menekan input modifikator yang didefinisikan melalui , , atau .