Class.DragDetector 实例使用户在体验中与 3D 对象互动更加容易、愉快,例如打开门、抽屉、滑动零件等,并且提供多种键功能。主要功能包括:
将 DragDetector 放置在任意 BasePart 或 Model 下,以便通过所有输入(鼠标、触摸、游戏手柄和 VR)无需单行代验证码。
从多个选项中选择,定义对象在移动时通过 DragStyle 定义的方式,并且可选地添加轴或移动限制。
脚本可以响应拖动对象来驱动用户界面或做出理论上的决策,例如根据室内照明灯级调整墙壁开关的亮度。
玩家可以操作锚定的零件或模型,它们将在您释放时保持正确的位置。
Class.DragDetector|DragDetectors 在 Studio 中工作,直到您使用 选择 、移动 移动 、0>缩放0> 或DragDetectors3>工具,以便在编辑时测试和调整拖动对象更容易。
请参阅“3D 拖动检测器”指南以了解详细信息和使用示例。
概要
属性
将鼠标指针设置为显示父鼠标下的子鼠标指针。 设置鼠标指针为显示父鼠标指针下的子鼠标指针。
是否适用限制力到对象的中心 масс。
与参考框相对的主轴移动。
Datatype.CFrame 的 pivot,依赖于拖动探测器的 ReferenceInstance 。
用于生成所提出的移动的方法。
Class.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 : bool):RBXScriptSignal
在 DragStart 已初始化后,用户继续拖动对象时发生。
当用户停止拖动对象时,火焰会立即熄灭。
当用户开始拖动对象时,火焰会立即点燃。
在玩家与 ClickDetector 或 DragDetector 的父亲互动时触发。
当 ClickDetector 或 DragDetector 的父级被玩家悬停时,它会发射。
在玩家的鼠标悬停在 ClickDetector 或 DragDetector 的父级时触发。
在玩家右击鼠标时,如果在 ClickDetector 或 DragDetector 上,玩家的鼠标指针位置在Class.ClickDetector 或1> Class.DragDetector1> 上,玩家就会发生火灾。
属性
ActivatedCursorIcon
将鼠标悬停在此DragDetector的父级上时,显示鼠标标志。如果此属性为空,探测器将使用默认图标。
要更改激活的鼠标标志,将此属性设置为您想要使用的图像的资产 ID 。
ApplyAtCenterOfMass
当 false (默认) 时,约束力量在用户单击的点上应用。 当 true 时,力量在对象的中心 масс中应用。 只有在 ResponseStyle 是 Enum.DragDetectorResponseStyle.Physical 和父对象未锚定时才相关。
MaxDragAngle
如果这个数值大于 MinDragAngle ,翻译将在该范围内放置。
这不是限制;它只是阻止拖动探测器的尝试生成移动以保持在限制内。请参阅 AddConstraintFunction() 添加自定义限制到拖动。
MaxDragTranslation
在任何维度上,如果这个大于 MinDragTranslation ,翻译将在该范围内放置。
这不是限制;它只是阻止拖动探测器的尝试生成移动以保持在限制内。请参阅 AddConstraintFunction() 添加自定义限制到拖动。
MinDragAngle
如果这小于 MaxDragAngle ,翻译将在该范围内折边。
这不是限制;它只是阻止拖动探测器的尝试生成移动以保持在限制内。请参阅 AddConstraintFunction() 添加自定义限制到拖动。
MinDragTranslation
在任何尺寸上,如果这小于 MaxDragTranslation ,翻译将在该范围内折边。
这不是限制;它只是阻止拖动探测器的尝试生成移动以保持在限制内。请参阅 AddConstraintFunction() 添加自定义限制到拖动。
Orientation
指定关键框相对于参考框的移动轴的旋转 YXZ (不会更改参考框自身的方向) 。 线性翻译和轴向旋转将在此重新定向 Y 轴上, 平面翻译在 XZ 平面上。 更改此值会自动更新 1> Class.DragDetector.Axis|Axis1>
ReferenceInstance
一个实例 whose CFrame 是拖动探测器的参考框架。 DragFrame 是与此 CFrame 通过 1> Class.DragDetector:GetreferenceFrame()|getreference框架()1> 方法获取的。
如果此实例是一个 PVInstance ,参考框将是其中心;如果 Attachment ,世界 CFrame 将基于拖动探测器的父 2>Class.BasePart2> 或 5>Class.Model5> 。 如果
ResponseStyle
一旦该建议的运动已计算并可能受到限制,这是使用该DragDetector 所影响的对象移动工具或不移动工具的原理。见Enum.DragDetectorResponseStyle 获取选项。
Responsiveness
更高的值会使对象更快地达到目标。仅在 ResponseStyle 是 Enum.DragDetectorResponseStyle.Physical 和父对象是未锚定的情况下。
RunLocally
如果为假 (默认), 客户端向服务器发送复制信号 (DragStart ,DragContinue ,DragEnd ) 处理鼠标射线, 对数据模型进行更改, 并在向客户端重复它们.
如果是这样,客户端会自己处理这些信号,并且不会将它们复制到服务器。客户端 LocalScripts 可以用于响应这些事件,而 RemoteEvents 可以用于发送任何需要复制到服务器的更改。
TrackballRadialPullFactor
当鼠标位于轨道球之外时,DragDetector 可以应用一个径向拉动旋转,使球像试图向轨道球一样卷出。此属性是一个 0 到 1 的乘数,用于将该旋转作为贡献给总共。 只有在 DragStyle 是
TrackballRollFactor
当鼠标位于轨道球之外时,DragDetector 可以应用一个滚动旋转,将球如果装在 vinyl 记录上,面向视窗。 此属性是一个 0 到 1 的乘数,用于将该滚动旋转添加到总和。 只有在 DragStyle 是
VRSwitchKeyCode
在 VR 输入期间,Enum.KeyCode 的 DragStyle 用于切换副运动模式。仅适用于拖动检测器的 Class.DragDetector.DragStyle|拖动式 有主要和副主要运动模式。
方法
AddConstraintFunction
添加一个函数来修改或限制所提出的移动。该函数接受一个输入CFrame的Datatype.CFrame 的移动,并返回一个CFrame 的2> Datatype.CFrame2> 。 both the input and output are expressed relative to the reference frame. 您可
要将添加的限制函数移除,请在返回的连接对象上调用 Disconnect()。
参数
添加函数的优先级订单。更高的值取得优先权。
返回
使用此连接对象来移除限制函数。
SetDragStyleFunction
如果 DragStyle 设置为 Enum.DragDetectorDragStyle.Scriptable ,给出的函数调用时会受到 DragContinue 信
如果函数返回 nil ,对象不会移动。这对于脚本尚未收集到正确答案所需的所有信息有用,或在暂时情况下您想要对象保留在原位。
参数
监控DragContinue信号。 此函数接收信号的世界空间曲线射线,并将其返回CFrame,其中包含世界空间中心位置和方向。 如果此函数返回nil,对象不会移动。
返回
SetPermissionPolicyFunction
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。
如果拖动探测器的 DragStyle 具有主要和副主要移动模式,此参数表示是否使用 KeyboardModeSwitchKeyCode 、 Class.DragDetector.GamepadModeSwitchKeyCode|GamepadMode
DragStart
当用户开始拖动对象时,火焰会立即点燃。
参数
拖动的初始化射线投射的命中框。
初始化拖动的部分,被 cursor raycast 击中的部分。
如果使用 VR 输入设备,手持鼠标/指针/控制器的 CFrame。
如果拖动探测器的 DragStyle 具有主要和副主要移动模式,此参数表示是否使用 KeyboardModeSwitchKeyCode 、 Class.DragDetector.GamepadModeSwitchKeyCode|GamepadMode