DragDetector

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

實例可以幫助和促進體驗中與 3D 對象的互動,例如開啟門和抽屜、滑動零件等等。關鍵功能包括:

  • 在任何 DragDetectorBasePartModel 下放置一個 ,使其可以通過所有輸入(滑鼠、觸摸、遊戲手柄和 VR)拖動,而無需單條代碼。

  • 從多個 DragStyle 選項中選擇,定義對象如何通過 ResponseStyle 回應運動,並可選擇應用軸或運動限制。

  • 腳本可以回應拖動對象的操縱來驅動用戶介面或做出邏輯決定,例如根據滑動牆開關調整房間的光亮度。

  • 玩家可以操縱錨定的零件或模型,並且在發布時保持在你放置它們的位置。

  • 在工作室工作,只要你不使用選擇、移動、縮放或旋轉工具,就可以輕鬆測試和調整可拖曳的對象,而編輯時。

請參閱3D拖動偵測器指南的詳情和使用示例。

概要

屬性

屬性 繼承自 ClickDetector

方法

活動

活動 繼承自 ClickDetector

屬性

ActivatedCursorIcon

ContentId
平行讀取

將鼠標指示符設為在此 DragDetector 的父處激活時顯示的圖示。如果此屬性為空白,偵測器將使用預設圖示。

若要變更啟用的鼠標圖示,將此屬性設為你想使用的圖像的資產ID。

ApplyAtCenterOfMass

平行讀取

當為 false (預設值) 時,限制力將在使用者單擊的點施加。當真實時,力量會被應用在物物件的質量中心。僅適用於 ResponseStyleEnum.DragDetectorResponseStyle.Physical 且父對象未錨定時。

未複製
平行讀取

與參考框架相對的運動主軸。對於 DragStyleEnum.DragDetectorDragStyle.TranslateLine ,翻譯方向;對於 Enum.DragDetectorDragStyle.TranslatePlane ,正常到運動平面;對於 Enum.DragDetectorDragStyle.RotateAxis ,1D旋轉軸。變更此值會自動更新Orientation,並相反。

DragFrame

平行讀取

如果 被設定,旋轉點與參考框架相對;否則,旋轉點與拖動開始時的框架相對。

平行讀取

用於生成建議運動的方法,給予一個光標射線流。見 Enum.DragDetectorDragStyle 獲得選項。

Enabled

平行讀取

如果真實,DragDetector 會回應使用者輸入;如果為假,則不會。

GamepadModeSwitchKeyCode

平行讀取

在遊戲輸入期間,切換次要運動模式的 Enum.KeyCode 。只適用於拖動偵測器的 DragStyle 具有主要和次要運動模式。

KeyboardModeSwitchKeyCode

平行讀取

在鍵盤輸入期間,切換次要運動模式的 Enum.KeyCode 。只適用於拖動偵測器的 DragStyle 具有主要和次要運動模式。

MaxDragAngle

平行讀取

如果大於 MinDragAngle,翻譯將被限制在該範圍內。

這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。

只有相關,如果 DragStyleEnum.DragDetectorDragStyle.RotateAxis

MaxDragTranslation

平行讀取

在任何維度中,如果這大於 MinDragTranslation,翻譯將被限制在該範圍內。

這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。

MaxForce

平行讀取

對物件施加最大力以達到目標。僅適用於 ResponseStyleEnum.DragDetectorResponseStyle.Physical 且父物件未錨定時。

MaxTorque

平行讀取

對物件應用最大扭矩以達到目標。僅適用於 ResponseStyleEnum.DragDetectorResponseStyle.Physical 且父物件未錨定時。

MinDragAngle

平行讀取

如果小於 MaxDragAngle,翻譯將被壓縮在該範圍內。

這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。

只有相關,如果 DragStyleEnum.DragDetectorDragStyle.RotateAxis

MinDragTranslation

平行讀取

在任何維度中,如果這小於 MaxDragTranslation,翻譯將被壓縮在該範圍內。

這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。

Orientation

平行讀取

指定 YXZ 旋轉軸的運動相對於參考框架(不會改變參考框架本身的方向)。線性翻轉和軸向旋轉將在這個重新定向的 Y 軸上發生,平面翻轉在 XZ 平面上。變更此值會自動更新Axis,並相反。

平行讀取

控制玩家可以與 DragDetector 互動的許可等級。默認值為 Enum.DragDetectorPermissionPolicy.Everybody

ReferenceInstance

平行讀取

一個實例,其 CFrame 是拖動偵測器的參考框架DragFrame 是相對於這個 CFrame 表達的,可以通過 GetReferenceFrame() 方法來恢復。

如果此實例是 PVInstance ,參考框架將是其軸心;如果是 Attachment ,則其世界 CFrame 。如果是 nil 或不是前者,參考框架將基於拖動偵測器的父 BasePartModel 的軸點。

平行讀取

一旦提出的動作已計算並可能受限,這是用於移移動工具或不移動工具動受 DragDetector 影響的物件的方法。查看 Enum.DragDetectorResponseStyle 以獲得選項。

Responsiveness

平行讀取

更高的值會讓對象更快地達到目標。只有當 ResponseStyleEnum.DragDetectorResponseStyle.Physical 且父對象未錨定時才相關。

RunLocally

平行讀取

如果為假(預設值),客戶端會向處理鼠標光線的伺服器發送複製信號(DragStartDragContinueDragEnd),以便對數據模型進行更改,並將它們複製到客戶端。

如果真實,客戶端會自行處理這些信號,並不會將它們複製到服務伺服器。客戶端 LocalScripts 可用於回應這些事件,並且 RemoteEvents 可用於向服務伺服器發送任何可能需要複製的變更。

SecondaryAxis

未複製
平行讀取

運動的次軸。與使用相同模式的定向相關 Attachments .

TrackballRadialPullFactor

平行讀取

當光標位於軌道之外時,DragDetector 可以應用徑向拉動旋轉,使球像是在嘗試向光標滾動一樣旋轉。此屬性是一個從 0 到 1 的乘數,用於將該旋轉添加到總計中。僅適用於 DragStyleEnum.DragDetectorDragStyle.RotateTrackball

TrackballRollFactor

平行讀取

當光標位於軌道之外時,DragDetector 可以應用滾動旋轉,使球像是裝在觀察者面前的乙烯基記錄上一樣旋轉。此屬性是將該滾動旋轉添加到總計的 0 到 1 倍數。僅適用於 DragStyleEnum.DragDetectorDragStyle.RotateTrackball

VRSwitchKeyCode

平行讀取

在 VR 輸入期間,切換次要運動模式的 Enum.KeyCode 。只適用於拖動偵測器的 DragStyle 具有主要和次要運動模式。

WorldAxis

未複製
平行讀取

在世界空間中表達的 Axis 。與 Attachments 使用相同模式的方向相關。

WorldSecondaryAxis

未複製
平行讀取

在世界空間中表達的 SecondaryAxis 。與 Attachments 使用相同模式的方向相關。

方法

AddConstraintFunction

添加一個功能來修改或限制提出的動作。函數接受 來自 建議 動作的輸入,並返回 修改或未修改的動作。輸入和輸出都以參考框架為基礎進行表達。您可以添加多個功能,將在 priority 順序中呼叫,並在鏈中傳遞結果。

要移除添加的約束函數,請在返回的連接對物件上呼叫 Disconnect()

參數

priority: number

這種方法添加的功能的優先級順序。更高的值取得優先於更低的值。

預設值:""
function: function

修改或限制提出的動作的功能。此功能接受輸入 CFrame建議 動作,並返回一個 CFrame修改 或未修改動作,兩者都與參考框相關。

預設值:""

返回

使用此連線對象來移除約束函數。

GetReferenceFrame

返回表達運動的參考 CFrame ;查看 ReferenceInstance 屬性獲得更多細節。


返回

表達運動的參考 CFrame ,在哪裡運動被表達。

RestartDrag

()

可能從腳本中呼叫以重新啟動拖動使用新參數,如果參數,例如 DragStyle , AxisSecondaryAxis 發生變化。


返回

()

SetDragStyleFunction

()

傳遞一個函數,如果和只有當 DragStyle 設為 Enum.DragDetectorDragStyle.Scriptable 時才使用。當回應一個 DragContinue 信號時,指定的函數會被稱為,它會收到信號的世界空間光標射線與類型 Ray ,並返回一個 CFrame 包含所需位置和方向的旋轉點在世界空間的位置。

如果函數返回 nil,對象不會被移動。如果腳本尚未收集所需的所有資訊來提供正確的答案,或在暫時情況下您希望對象留在原地,這很有用。

參數

function: function

用於監控DragContinue信號的功能。此功能接收信號的世界空間光標射線,並返回包含世界空間軸心所需位置和方向的 CFrame 光標。如果此功能返回 nil,對象不會被移動。

預設值:""

返回

()

SetPermissionPolicyFunction

()

傳遞一個函數,如果和只有當 PermissionPolicy 設為 Enum.DragDetectorPermissionPolicy.Scriptable 時才使用。給出的函數接受 Player 參數啟用/禁用偵測器給特定玩家。它還收到一個 參數,指示哪個特定 被點擊,例如拖動可選項卡中的一部分;這對啟用/禁用偵測器基於該部分的 、 、 值或其他細節有用。


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)

參數

function: function

用於設置偵測器互動性的功能。此功能接受 Player 參數啟用/停用偵測器給特定玩家。它還收到一個 part 參數,指示哪個特定 BasePart 已點擊,例如拖動可選擇的一部分內的 Model ;這對啟用/禁用偵測器基於該部分的 NameColorHasTag() 值或其他細節有用。

預設值:""

返回

()

活動

DragContinue

當使用者繼續拖動對象後 DragStart 已被啟動時,發生火災。

參數

playerWhoDragged: Player

初始化拖動通過 Player 並正在繼續拖動的 DragStart

cursorRay: Ray

Ray 從曲標發出,瞄準場景。

viewFrame: CFrame

CFrame 用戶的 Camera

vrInputFrame: OptionalCoordinateFrame

如果使用 VR 輸入裝置,手持鼠標/指示器/控制器的 CFrame

isModeSwitchKeyDown: boolean

如果拖動偵測器的 具有主要和次要運動模式,此參數表示用戶是否按下了通過 、 》 或 》 定義的修改輸入。


DragEnd

當使用者停止拖動對物件時發生火災。

參數

playerWhoDragged: Player

那個 Player 啟動了拖動通過 DragStart 並已結束(已發布)拖動。


DragStart

當使用者開始拖動對物件時發生火災。

參數

playerWhoDragged: Player

Player 誰啟動了拖動。

cursorRay: Ray

Ray 從曲標發出,瞄準場景。

viewFrame: CFrame

CFrame 用戶的 Camera

hitFrame: CFrame

啟動拖動的鼠標射線的命中框。

clickedPart: BasePart

被拖動啟動的鼠標射線擊中的部分。

vrInputFrame: OptionalCoordinateFrame

如果使用 VR 輸入裝置,手持鼠標/指示器/控制器的 CFrame

isModeSwitchKeyDown: boolean

如果拖動偵測器的 具有主要和次要運動模式,此參數表示用戶是否按下了通過 、 》 或 》 定義的修改輸入。