DragDetector

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Ví dụ DragDetector instance thúc đẩy và khuyến khích tương tác với đối tượng 3D trong một trải nghiệm, chẳng hạn như mở cửa và ngăn kéo, kéo một phần xung quanh, và nhiều hơn nữa.Các tính năng chính bao gồm:

  • Đặt một DragDetector dưới bất kỳ BasePart hoặc Model để làm cho nó có thể kéo qua tất cả các đầu vào (chuột, cảm ứng, gamepad và VR), tất cả mà không có một dòng mã nào.

  • Chọn từ một số DragStyle lựa chọn, xác định cách mà đối tượng phản ứng với chuyển động thông qua ResponseStyle , và có thể áp dụng giới hạn trục hoặc chuyển động bắt buộc.

  • Các kịch bản có thể phản ứng với việc thao tác với các đối tượng bị kéo để lái UI hoặc đưa ra các quyết định logic, chẳng hạn như điều chỉnh mức độ sáng trong một phòng dựa trên công tắc chuyển đổi ánh sáng trượt.

  • Người chơi có thể thao tác các phần hoặc mô hình được neo và chúng sẽ ở lại chính xác nơi bạn đặt chúng khi phát hành.

  • DragDetectors làm việc trong Studio miễn là bạn không sử dụng công cụ Chọn , Di chuyển , Thước đo hoặc Xoay công cụ, làm cho nó dễ dàng hơn để kiểm tra và điều chỉnh các đối tượng có thể kéo được trong khi chỉnh sửa.

Xem hướng dẫn 3D Drag Detectors chi tiết và ví dụ sử dụng.

Tóm Tắt

Thuộc Tính

Thuộc Tính kế thừa từ ClickDetector

Phương Pháp

Sự Kiện

Sự Kiện kế thừa từ ClickDetector

Thuộc Tính

ActivatedCursorIcon

ContentId
Đọc Song Song

Đặt biểu tượng con trỏ để hiển thị khi chuột được kích hoạt trên cha của đối tượng này DragDetector .Nếu thuộc tính này được để trống, máy dò sẽ sử dụng biểu tượng mặc định.

Để thay đổi biểu tượng con trỏ đã kích hoạt, hãy đặt thuộc tính này vào ID tài sản của hình ảnh bạn muốn sử dụng.

ApplyAtCenterOfMass

Đọc Song Song

Khi false (mặc định), lực hạn chế được áp dụng tại điểm mà người dùng nhấp vào.Khi đúng, lực được áp dụng tại trung tâm khối lượng của đối tượng.Chỉ liên quan nếu ResponseStyleEnum.DragDetectorResponseStyle.Physical và đối tượng cha không neo.

Không Sao Chép
Đọc Song Song

Trục chính của chuyển động, được biểu hiện so với khung tham chiếu.Đối với một DragStyle của Enum.DragDetectorDragStyle.TranslateLine , hướng dịch; đối với Enum.DragDetectorDragStyle.TranslatePlane , bình thường trên phương tiện di chuyển; đối với Enum.DragDetectorDragStyle.RotateAxis , trục của 1D xoay.Thay đổi giá trị này tự động cập nhật Orientation và ngược lại.

DragFrame

Đọc Song Song

Nếu ReferenceInstance được cài đặt, CFrame của trục quay so với khung tham chiếu; nếu không, CFrame của trục quay so với khung của nó tại đầu cuộc kéo.

Đọc Song Song

Phương pháp được sử dụng để tạo chuyển động đề xuất, dựa trên một dòng các tia con trỏ. Xem Enum.DragDetectorDragStyle đối với các tùy chọn.

Enabled

Đọc Song Song

Nếu đúng, DragDetector đáp ứng lại nhập của người dùng; nếu sai, nó không làm như vậy.

GamepadModeSwitchKeyCode

Đọc Song Song

Trong lúc nhập gamepad, Enum.KeyCode để chuyển đổi chế độ di chuyển thứ cấp.Chỉ áp dụng nếu cảm biến kéo có DragStyle cả chế độ di chuyển chính và thứ cấp.

KeyboardModeSwitchKeyCode

Đọc Song Song

Trong lúc nhập bàn phím, Enum.KeyCode để chuyển đổi chế độ di chuyển thứ cấp.Chỉ áp dụng nếu cảm biến kéo có DragStyle cả chế độ di chuyển chính và thứ cấp.

MaxDragAngle

Đọc Song Song

Nếu lớn hơn MinDragAngle, bản dịch sẽ bị giới hạn trong phạm vi đó.

Đây không phải là một hạn chế; nó chỉ cản trở các nỗ lực của máy phát hiện chuyển động để tạo ra chuyển động nhằm đảm bảo nằm trong giới hạn.Xem AddConstraintFunction() để thêm hạn chế tùy chỉnh cho một lần kéo.

Chỉ liên quan nếu DragStyleEnum.DragDetectorDragStyle.RotateAxis.

MaxDragTranslation

Đọc Song Song

Ở bất kỳ chiều nào, nếu điều này lớn hơn MinDragTranslation, bản dịch sẽ bị giới hạn trong phạm vi đó.

Đây không phải là một hạn chế; nó chỉ cản trở các nỗ lực của máy phát hiện chuyển động để tạo ra chuyển động nhằm đảm bảo nằm trong giới hạn.Xem AddConstraintFunction() để thêm hạn chế tùy chỉnh cho một lần kéo.

MaxForce

Đọc Song Song

Lực tối đa được áp dụng cho đối tượng để đạt được mục tiêu của nó. Chỉ có ý nghĩa nếu ResponseStyleEnum.DragDetectorResponseStyle.Physical và đối tượng cha không neo.

MaxTorque

Đọc Song Song

Mômen tối đa được áp dụng cho đối tượng để đạt được mục tiêu của nó. Chỉ có ý nghĩa nếu ResponseStyleEnum.DragDetectorResponseStyle.Physical và đối tượng cha không neo.

MinDragAngle

Đọc Song Song

Nếu điều này nhỏ hơn MaxDragAngle, bản dịch sẽ bị giới hạn trong phạm vi đó.

Đây không phải là một hạn chế; nó chỉ cản trở các nỗ lực của máy phát hiện chuyển động để tạo ra chuyển động nhằm đảm bảo nằm trong giới hạn.Xem AddConstraintFunction() để thêm hạn chế tùy chỉnh cho một lần kéo.

Chỉ liên quan nếu DragStyleEnum.DragDetectorDragStyle.RotateAxis.

MinDragTranslation

Đọc Song Song

Ở bất kỳ chiều nào, nếu điều này nhỏ hơn MaxDragTranslation, bản dịch sẽ bị giới hạn trong phạm vi đó.

Đây không phải là một hạn chế; nó chỉ cản trở các nỗ lực của máy phát hiện chuyển động để tạo ra chuyển động nhằm đảm bảo nằm trong giới hạn.Xem AddConstraintFunction() để thêm hạn chế tùy chỉnh cho một lần kéo.

Orientation

Đọc Song Song

Xác định sự xoay YXZ của trục chuyển động so với khung tham chiếu (không thay đổi hướng của khung tham chiếu chính nó).Dịch chuyển song song và xoay trục sẽ ở trên trục Y này được chuyển hướng lại, và dịch chuyển phẳng trong XZ không gian.Thay đổi giá trị này tự động cập nhật Axis và ngược lại.

Đọc Song Song

Kiểm soát cấp độ quyền cho phép mà người chơi có thể tương tác với DragDetector. Mặc định là Enum.DragDetectorPermissionPolicy.Everybody.

ReferenceInstance

Đọc Song Song

Một ví dụ mà CFrame của nó là khung tham chiếu cho máy phát hiện kéo.The DragFrame được biểu hiện tương quan với cái CFrame này có thể được truy xuất thông qua phương pháp GetReferenceFrame() .

Nếu ví dụ này là một PVInstance , khung tham chiếu sẽ là trung tâm của nó; nếu một Attachment , thế giới của nó sẽ là CFrame .Nếu nó là nil hoặc không phải là trước đó, khung tham chiếu sẽ dựa trên trục của cha của máy phát hiện kéo BasePart hoặc Model .

Đọc Song Song

Một khi động tác được đề xuất đã được tính toán và có thể bị hạn chế, đây là triết lý được sử dụng để di chuyển, hoặc không di chuyển, các đối tượng bị ảnh hưởng bởi DragDetector .Xem Enum.DragDetectorResponseStyle đối với các tùy chọn.

Responsiveness

Đọc Song Song

Các giá trị cao hơn khiến đối tượng đạt được mục tiêu của nó nhanh hơn. Chỉ có ý nghĩa nếu ResponseStyleEnum.DragDetectorResponseStyle.Physical và đối tượng cha không neo.

RunLocally

Đọc Song Song

Nếu sai (mặc định), khách hàng gửi tín hiệu lặp lại (DragStart , DragContinue , DragEnd ) đến máy chủ xử lý con trỏ, thay đổi mô hình dữ liệu và sao chép chúng cho các khách hàng tiếp theo.

Nếu đúng, khách hàng xử lý các tín hiệu này bởi chính nó và không sao chép chúng lên máy chủ.Client có thể được sử dụng để trả lời các sự kiện này và có thể được sử dụng để gửi bất kỳ thay đổi nào có thể được sao chép lên máy chủ.

SecondaryAxis

Không Sao Chép
Đọc Song Song

Trục thứ cấp của chuyển động. Liên quan đến hướng dùng cùng một triết lý như Attachments .

TrackballRadialPullFactor

Đọc Song Song

Khi con trỏ nằm ngoài trackball, DragDetector có thể áp dụng một vòng xoay kéo tròn khiến quả bóng như thể nó đang cố gắng cuộn về phía con trỏ.Thuộc tính này là một nhân từ 0 đến 1 để thêm quay như một đóng góp cho tổng.Chỉ liên quan nếu DragStyleEnum.DragDetectorDragStyle.RotateTrackball.

TrackballRollFactor

Đọc Song Song

Khi con trỏ nằm ngoài trackball, DragDetector có thể áp dụng một cuộn quay xoay lăn biến biểu bóng như thể nó được gắn vào một kỷ niệm vinyl hướng về người xem.Thuộc tính này là một nhân từ 0 đến 1 để thêm vòng xoay cuộn vào tổng.Chỉ liên quan nếu DragStyleEnum.DragDetectorDragStyle.RotateTrackball.

VRSwitchKeyCode

Đọc Song Song

Trong lúc nhập VR, Enum.KeyCode để chuyển đổi chế độ di chuyển thứ cấp.Chỉ áp dụng nếu cảm biến kéo có DragStyle cả chế độ di chuyển chính và thứ cấp.

WorldAxis

Không Sao Chép
Đọc Song Song

The Axis được biểu hiện trong không gian thế giới. Liên quan đến hướng dùng cùng một triết lý như Attachments .

WorldSecondaryAxis

Không Sao Chép
Đọc Song Song

The SecondaryAxis được biểu hiện trong không gian thế giới. Liên quan đến hướng dùng cùng một triết lý như Attachments .

Phương Pháp

AddConstraintFunction

Thêm một chức năng để thay đổi hoặc hạn chế chuyển động đề xuất.Chức năng nhận một đầu vào CFrame của đề xuất chuyển động và trả lại một CFrame của chuyển động đã sửa đổi hoặc chưa sửa đổi chuyển động.Cả đầu vào và đầu ra được biểu hiện so với khung tham chiếu.Bạn có thể thêm nhiều chức năng sẽ được gọi theo thứ tự bởi priority , truyền kết quả theo chuỗi.

Để loại bỏ chức năng hạn chế được thêm, gọi Disconnect() trên đối tượng kết nối trả về.

Tham Số

priority: number

Thứ tự ưu tiên cho các chức năng được thêm bằng cách này. Các giá trị cao hơn có ưu tiên hơn các giá trị thấp hơn.

Giá Trị Mặc Định: ""
function: function

Chức năng để thay đổi hoặc hạn chế chuyển động được đề xuất.Chức năng này nhận một đầu vào CFrame của đề xuất chuyển động và trả lại một CFrame của chuyển động đã sửa đổi hoặc chưa sửa đổi, cả hai đều tương quan với khung tham chiếu.

Giá Trị Mặc Định: ""

Lợi Nhuận

Sử dụng đối tượng kết nối này để loại bỏ chức năng hạn chế.

GetReferenceFrame

Trả về tham chiếu CFrame trong đó chuyển động được biểu hiện; xem thêm thuộc tính ReferenceInstance để có thêm chi tiết.


Lợi Nhuận

Tham chiếu CFrame trong đó chuyển động được biểu hiện.

RestartDrag

()

Có thể được gọi từ một kịch bản để khởi động lại kéo sử dụng các tham số mới, nếu các tham số như DragStyle , Axis hoặc SecondaryAxis thay đổi.


Lợi Nhuận

()

SetDragStyleFunction

()

Chuyển một chức năng để sử dụng nếu và chỉ nếu DragStyle được đặt thành Enum.DragDetectorDragStyle.Scriptable .Chức năng được cung cấp được gọi khi đáp ứng lại một tín hiệu DragContinue , nó nhận được con trỏ ray không gian dấu hiệu với loại Ray , và nó trả lại một CFrame chứa vị trí và hướng mong muốn của trục trong không gian thế giới.

Nếu chức năng trả về nil, đối tượng sẽ không được di chuyển.Điều này hữu ích nếu kịch bản chưa thu thập được tất cả thông tin cần thiết để đưa ra câu trả lời chính xác, hoặc trong các trường hợp tạm thời mà bạn muốn đối tượng ở lại nơi nó ở.

Tham Số

function: function

Chức năng để theo dõi các tín hiệu DragContinue .Chức năng này nhận được con trỏ chuột không gian của tín hiệu và nó trả về một CFrame chứa vị trí và hướng mong muốn của trục trong không gian thế giới.Nếu chức năng này trả về nil, đối tượng sẽ không được di chuyển.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

SetPermissionPolicyFunction

()

Chuyển một chức năng để sử dụng nếu và chỉ nếu PermissionPolicy được đặt thành Enum.DragDetectorPermissionPolicy.Scriptable .Chức năng được cung cấp chấp nhận một tham số Player để bật/tắt máy dò cho một người chơi cụ thể.Nó cũng nhận một tham số part để chỉ ra cụ thể BasePart đã được nhấp vào, chẳng hạn như một phần trong một phần có thể kéo Model ; điều này hữu ích để bật/tắt cảm biến dựa trên giá trị Name , Color , HasTag() của phần đó hoặc các chi tiết khác.


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)

Tham Số

function: function

Chức năng để đặt tính tương tác của máy dò.Chức năng này chấp nhận một tham số Player để bật/tắt máy dò cho một người chơi cụ thể.Nó cũng nhận một tham số part để chỉ ra cụ thể BasePart đã được nhấp vào, chẳng hạn như một phần trong một thành phần có thể kéo Model ; điều này hữu ích để bật/tắt cảm biến dựa trên giá trị Name , Color , HasTag() của phần đó hoặc các chi tiết khác.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Sự Kiện

DragContinue

Bắt lửa khi người dùng tiếp tục kéo đối tượng sau khi DragStart đã được khởi động.

Tham Số

playerWhoDragged: Player

Người Player khởi xướng kéo qua DragStart và hiện đang tiếp tục kéo.

cursorRay: Ray

Ray phát ra từ con trỏ, hướng vào cảnh.

viewFrame: CFrame

CFrame của người dùng Camera .

vrInputFrame: OptionalCoordinateFrame

Nếu sử dụng một thiết bị nhập VR, CFrame của bàn tay giữ con trỏ/ursor/控制器.

isModeSwitchKeyDown: boolean

Nếu cảm biến kéo có DragStyle cả chế độ di chuyển chính và thứ cấp, tham số này chỉ ra xem người dùng đang nhấn vào đầu vào chỉnh sửa được xác định thông qua KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode hoặc VRSwitchKeyCode .


DragEnd

Bắt lửa khi người dùng ngừng kéo đối tượng.

Tham Số

playerWhoDragged: Player

Người khởi xướng Player đã khởi xướng kéo qua DragStart và hiện đã kết thúc (phát hành) kéo.


DragStart

Bắt lửa khi người dùng bắt đầu kéo đối tượng.

Tham Số

playerWhoDragged: Player

Player ai đã khởi xướng cuộc kéo.

cursorRay: Ray

Ray phát ra từ con trỏ, hướng vào cảnh.

viewFrame: CFrame

CFrame của người dùng Camera .

hitFrame: CFrame

Khung trúng của con trỏ raycast đã khởi xướng cuộc kéo.

clickedPart: BasePart

Phần bị ảnh hưởng bởi tia chuột phát sóng khởi xướng cuộc kéo.

vrInputFrame: OptionalCoordinateFrame

Nếu sử dụng một thiết bị nhập VR, CFrame của bàn tay giữ con trỏ/ursor/控制器.

isModeSwitchKeyDown: boolean

Nếu cảm biến kéo có DragStyle cả chế độ di chuyển chính và thứ cấp, tham số này chỉ ra xem người dùng đang nhấn vào đầu vào chỉnh sửa được xác định thông qua KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode hoặc VRSwitchKeyCode .