DragDetector

Tampilkan yang Tidak Digunakan Lagi

*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

Properti diwarisi dari ClickDetector

Metode

Acara

Acara diwarisi dari ClickDetector

Properti

ActivatedCursorIcon

ContentId
Baca Paralel

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

Baca Paralel

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.

Tidak Direplikasi
Baca Paralel

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

Baca Paralel

Jika ReferenceInstance diatur, CFrame pivot relatif terhadap frame referensi; jika tidak, CFrame pivot relatif terhadap frame-nya di awal seretan.

Baca Paralel

Paradigma yang digunakan untuk menghasilkan gerakan yang diusulkan, dengan memberikan aliran sinar kurursor. Lihat Enum.DragDetectorDragStyle untuk opsi.

Enabled

Baca Paralel

Jika benar, DragDetector menanggapi input pengguna; jika salah, tidak.

GamepadModeSwitchKeyCode

Baca Paralel

Selama masukan gamepad, Enum.KeyCode untuk menyalakan mode gerakan sekunder.Hanya berlaku jika detektor seret memiliki DragStyle mode gerakan primer dan sekunder.

KeyboardModeSwitchKeyCode

Baca Paralel

Selama masukan keyboard, Enum.KeyCode untuk menyalakan mode gerakan sekunder.Hanya berlaku jika detektor seret memiliki DragStyle mode gerakan primer dan sekunder.

MaxDragAngle

Baca Paralel

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

Baca Paralel

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

Baca Paralel

Kekuatan maksimum yang diterapkan untuk objek untuk mencapai tujuannya. Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orangtua tidak terikat.

MaxTorque

Baca Paralel

Torsi maksimum yang diterapkan untuk objek untuk mencapai tujuannya. Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orang tua tidak terpasang.

MinDragAngle

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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.

Baca Paralel

Mengontrol tingkat izin di mana pemain dapat berinteraksi dengan DragDetector . Default adalah Enum.DragDetectorPermissionPolicy.Everybody .

ReferenceInstance

Baca Paralel

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 .

Baca Paralel

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

Baca Paralel

Nilai yang lebih tinggi menyebabkan objek mencapai tujuannya lebih cepat. Hanya relevan jika ResponseStyle adalah Enum.DragDetectorResponseStyle.Physical dan objek orangtua tidak terikat.

RunLocally

Baca Paralel

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

Tidak Direplikasi
Baca Paralel

L sumbu sekunder dari gerakan. Berhubungan dengan orientasi menggunakan paradigma yang sama seperti Attachments .

TrackballRadialPullFactor

Baca Paralel

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

Baca Paralel

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

Baca Paralel

Selama masukan VR, Enum.KeyCode untuk menyalakan mode gerakan sekunder.Hanya berlaku jika detektor seret memiliki DragStyle mode gerakan primer dan sekunder.

WorldAxis

Tidak Direplikasi
Baca Paralel

The Axis yang dinyatakan di ruang dunia. Berhubungan dengan orientasi menggunakan paradigma yang sama dengan Attachments .

WorldSecondaryAxis

Tidak Direplikasi
Baca Paralel

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

priority: number

Urutan prioritas untuk fungsi yang ditambahkan melalui metode ini. Nilai yang lebih tinggi memiliki prioritas lebih tinggi dari nilai yang lebih rendah.

Nilai Default: ""
function: function

Fungsi untuk memodifikasi atau membatasi gerakan yang diusulkan.Fungsi ini mengambil input CFrame dari proposal gerakan dan kembali dengan CFrame dari diedit atau tidak diedit gerakan, keduanya relatif terhadap frame referensi.

Nilai Default: ""

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

Referensi CFrame di mana gerakan dinyatakan.

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

function: function

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.

Nilai Default: ""

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

function: function

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.

Nilai Default: ""

Memberikan nilai

()

Acara

DragContinue

Melepaskan api saat pengguna melanjutkan menyeret objek setelah DragStart telah diinisialisasi.

Parameter

playerWhoDragged: Player

The Player yang memulai seretan melalui DragStart dan sekarang melanjutkan seretan.

cursorRay: Ray

Ray dipancarkan dari kurator, ditujukan ke adegan.

viewFrame: CFrame

CFrame dari Camera pengguna.

vrInputFrame: OptionalCoordinateFrame

Jika menggunakan perangkat input VR, CFrame dari tangan yang memegang kursor/penunjuk/kontroler.

isModeSwitchKeyDown: boolean

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

playerWhoDragged: Player

The Player yang memulai seretan melalui DragStart dan sekarang telah berakhir (diluncurkan) seretan.


DragStart

Melepaskan api saat pengguna mulai menyeret objek.

Parameter

playerWhoDragged: Player

Player yang memulai seretan.

cursorRay: Ray

Ray dipancarkan dari kurator, ditujukan ke adegan.

viewFrame: CFrame

CFrame dari Camera pengguna.

hitFrame: CFrame

Frame pukul dari raycast kurator yang memulai seretan.

clickedPart: BasePart

Bagian yang dipukul oleh raycast kurursor yang memulai seretan.

vrInputFrame: OptionalCoordinateFrame

Jika menggunakan perangkat input VR, CFrame dari tangan yang memegang kursor/penunjuk/kontroler.

isModeSwitchKeyDown: boolean

Jika detektor seret memiliki mode gerakan utama dan sekunder, parameter ini menunjukkan apakah pengguna menekan input modifikator yang didefinisikan melalui , , atau .