實例可以幫助和促進體驗中與 3D 對象的互動,例如開啟門和抽屜、滑動零件等等。關鍵功能包括:
在任何 DragDetector 或 BasePart 或 Model 下放置一個 ,使其可以通過所有輸入(滑鼠、觸摸、遊戲手柄和 VR)拖動,而無需單條代碼。
從多個 DragStyle 選項中選擇,定義對象如何通過 ResponseStyle 回應運動,並可選擇應用軸或運動限制。
腳本可以回應拖動對象的操縱來驅動用戶介面或做出邏輯決定,例如根據滑動牆開關調整房間的光亮度。
玩家可以操縱錨定的零件或模型,並且在發布時保持在你放置它們的位置。
在工作室工作,只要你不使用選擇、移動、縮放或旋轉工具,就可以輕鬆測試和調整可拖曳的對象,而編輯時。
請參閱3D拖動偵測器指南的詳情和使用示例。
概要
屬性
將鼠標指示符設為在此 DragDetector 的父處激活時顯示的圖示。
是否應用約束力到物物件的質量中心。
與參考框架相對的運動主軸。
軸的 CFrame 取決於拖動偵測器的 ReferenceInstance 。
用於生成建議動作的方法。
無論 DragDetector 是否回應使用者輸入。
在遊戲輸入期間,修改器 Enum.KeyCode 對次要運動模式的修改。
在鍵盤輸入期間,修改器 Enum.KeyCode 對次要運動模式的修改。
與 MinDragAngle 一起,阻止拖動偵測器嘗試產生運動。
與 MinDragTranslation 一起,阻止拖動偵測器嘗試產生運動。
對物件施加的最大力,以達到其目標。
對物件應用最大扭矩以達到目標。
與 MaxDragAngle 一起,阻止拖動偵測器嘗試產生運動。
與 MaxDragTranslation 一起,阻止拖動偵測器嘗試產生運動。
指定 YXZ 相對於參考框架的運動軸的旋轉。
控制玩家可以與 DragDetector 互動的許可等級。
一個實例,其 CFrame 是拖動偵測器的參考框架
用於移動工具移動工具或不移動拖動偵測器受影響的物件的方法。
更高的值會讓對象更快地達到目標。
無論使用者輸入在 DragDetector 複製到伺服器或保留在特定客戶端。
運動的次軸。
如果 DragStyle 是 Enum.DragDetectorDragStyle.RotateTrackball,則增加圓周引力旋轉作為總體貢獻的乘數器。
如果 DragStyle 是 Enum.DragDetectorDragStyle.RotateTrackball,則總計添加滾動旋轉的乘數器。
在 VR 輸入期間,調整器 Enum.KeyCode 對次要運動模式的修改。
在世界空間中表達的 Axis。
在世界空間中表達的 SecondaryAxis。
將鼠標懸停在此 ClickDetector 或 DragDetector 的父處時顯示鼠標指標。
角色與 ClickDetector 或 DragDetector 之間的最大距離,玩家可以與它互動。
方法
添加一個功能來修改或限制提出的動作。
返回表達運動的參考 CFrame 。
可以從腳本中呼叫以重新啟動拖動使用新參數。
傳遞一個函數,如果和只有當 DragStyle 設為 Enum.DragDetectorDragStyle.Scriptable 時才使用。
傳遞一個函數,如果和只有當 PermissionPolicy 設為 Enum.DragDetectorPermissionPolicy.Scriptable 時才使用。
活動
- DragContinue(playerWhoDragged : Player,cursorRay : Ray,viewFrame : CFrame,vrInputFrame : OptionalCoordinateFrame,isModeSwitchKeyDown : boolean):RBXScriptSignal
當使用者繼續拖動對象後 DragStart 已被啟動時,發生火災。
當使用者停止拖動對物件時發生火災。
當使用者開始拖動對物件時發生火災。
當玩家與 ClickDetector 或 DragDetector 的父親互動時,發生火災。
當父親的 ClickDetector 或 DragDetector 被玩家掃過時,發生火災。
當玩家的鼠標漂移到 ClickDetector 或 DragDetector 的父處時發生火焰。
當玩家按一下滑鼠右鍵在 ClickDetector 或 DragDetector 上時,發生火焰。
屬性
ActivatedCursorIcon
將鼠標指示符設為在此 DragDetector 的父處激活時顯示的圖示。如果此屬性為空白,偵測器將使用預設圖示。
若要變更啟用的鼠標圖示,將此屬性設為你想使用的圖像的資產ID。
ApplyAtCenterOfMass
當為 false (預設值) 時,限制力將在使用者單擊的點施加。當真實時,力量會被應用在物物件的質量中心。僅適用於 ResponseStyle 是 Enum.DragDetectorResponseStyle.Physical 且父對象未錨定時。
Axis
與參考框架相對的運動主軸。對於 DragStyle 的 Enum.DragDetectorDragStyle.TranslateLine ,翻譯方向;對於 Enum.DragDetectorDragStyle.TranslatePlane ,正常到運動平面;對於 Enum.DragDetectorDragStyle.RotateAxis ,1D旋轉軸。變更此值會自動更新Orientation,並相反。
MaxDragAngle
如果大於 MinDragAngle,翻譯將被限制在該範圍內。
這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。
只有相關,如果 DragStyle 是 Enum.DragDetectorDragStyle.RotateAxis 。
MaxDragTranslation
在任何維度中,如果這大於 MinDragTranslation,翻譯將被限制在該範圍內。
這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。
MinDragAngle
如果小於 MaxDragAngle,翻譯將被壓縮在該範圍內。
這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。
只有相關,如果 DragStyle 是 Enum.DragDetectorDragStyle.RotateAxis 。
MinDragTranslation
在任何維度中,如果這小於 MaxDragTranslation,翻譯將被壓縮在該範圍內。
這不是限制式;它只是阻止拖動偵測器嘗試在限制內生成運動,以便保持在限制內。參見 AddConstraintFunction() 以添加自訂約束到拖動。
Orientation
指定 YXZ 旋轉軸的運動相對於參考框架(不會改變參考框架本身的方向)。線性翻轉和軸向旋轉將在這個重新定向的 Y 軸上發生,平面翻轉在 XZ 平面上。變更此值會自動更新Axis,並相反。
ReferenceInstance
一個實例,其 CFrame 是拖動偵測器的參考框架DragFrame 是相對於這個 CFrame 表達的,可以通過 GetReferenceFrame() 方法來恢復。
如果此實例是 PVInstance ,參考框架將是其軸心;如果是 Attachment ,則其世界 CFrame 。如果是 nil 或不是前者,參考框架將基於拖動偵測器的父 BasePart 或 Model 的軸點。
ResponseStyle
一旦提出的動作已計算並可能受限,這是用於移移動工具或不移動工具動受 DragDetector 影響的物件的方法。查看 Enum.DragDetectorResponseStyle 以獲得選項。
Responsiveness
更高的值會讓對象更快地達到目標。只有當 ResponseStyle 是 Enum.DragDetectorResponseStyle.Physical 且父對象未錨定時才相關。
RunLocally
如果為假(預設值),客戶端會向處理鼠標光線的伺服器發送複製信號(DragStart,DragContinue,DragEnd),以便對數據模型進行更改,並將它們複製到客戶端。
如果真實,客戶端會自行處理這些信號,並不會將它們複製到服務伺服器。客戶端 LocalScripts 可用於回應這些事件,並且 RemoteEvents 可用於向服務伺服器發送任何可能需要複製的變更。
TrackballRadialPullFactor
當光標位於軌道之外時,DragDetector 可以應用徑向拉動旋轉,使球像是在嘗試向光標滾動一樣旋轉。此屬性是一個從 0 到 1 的乘數,用於將該旋轉添加到總計中。僅適用於 DragStyle 是 Enum.DragDetectorDragStyle.RotateTrackball 。
TrackballRollFactor
當光標位於軌道之外時,DragDetector 可以應用滾動旋轉,使球像是裝在觀察者面前的乙烯基記錄上一樣旋轉。此屬性是將該滾動旋轉添加到總計的 0 到 1 倍數。僅適用於 DragStyle 是 Enum.DragDetectorDragStyle.RotateTrackball 。
方法
AddConstraintFunction
添加一個功能來修改或限制提出的動作。函數接受 來自 建議 動作的輸入,並返回 修改或未修改的動作。輸入和輸出都以參考框架為基礎進行表達。您可以添加多個功能,將在 priority 順序中呼叫,並在鏈中傳遞結果。
要移除添加的約束函數,請在返回的連接對物件上呼叫 Disconnect() 。
參數
這種方法添加的功能的優先級順序。更高的值取得優先於更低的值。
返回
使用此連線對象來移除約束函數。
SetDragStyleFunction
傳遞一個函數,如果和只有當 DragStyle 設為 Enum.DragDetectorDragStyle.Scriptable 時才使用。當回應一個 DragContinue 信號時,指定的函數會被稱為,它會收到信號的世界空間光標射線與類型 Ray ,並返回一個 CFrame 包含所需位置和方向的旋轉點在世界空間的位置。
如果函數返回 nil,對象不會被移動。如果腳本尚未收集所需的所有資訊來提供正確的答案,或在暫時情況下您希望對象留在原地,這很有用。
參數
用於監控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)
參數
返回
活動
DragContinue
當使用者繼續拖動對象後 DragStart 已被啟動時,發生火災。
參數
如果使用 VR 輸入裝置,手持鼠標/指示器/控制器的 CFrame。
如果拖動偵測器的 具有主要和次要運動模式,此參數表示用戶是否按下了通過 、 》 或 》 定義的修改輸入。
DragStart
當使用者開始拖動對物件時發生火災。
參數
啟動拖動的鼠標射線的命中框。
被拖動啟動的鼠標射線擊中的部分。
如果使用 VR 輸入裝置,手持鼠標/指示器/控制器的 CFrame。
如果拖動偵測器的 具有主要和次要運動模式,此參數表示用戶是否按下了通過 、 》 或 》 定義的修改輸入。