DragDetector

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

Class.DragDetector 实例使用户在体验中与 3D 对象互动更加容易、愉快,例如打开门、抽屉、滑动零件等,并且提供多种键功能。主要功能包括:

  • DragDetector 放置在任意 BasePartModel 下,以便通过所有输入(鼠标、触摸、游戏手柄和 VR)无需单行代验证码。

  • 从多个选项中选择,定义对象在移动时通过 DragStyle 定义的方式,并且可选地添加轴或移动限制。

  • 脚本可以响应拖动对象来驱动用户界面或做出理论上的决策,例如根据室内照明灯级调整墙壁开关的亮度。

  • 玩家可以操作锚定的零件或模型,它们将在您释放时保持正确的位置。

  • Class.DragDetector|DragDetectors 在 Studio 中工作,直到您使用 选择 、移动 移动 、0>缩放0> 或DragDetectors3>工具,以便在编辑时测试和调整拖动对象更容易。

请参阅“3D 拖动检测器”指南以了解详细信息和使用示例。

概要

属性

继承自ClickDetector属性

方法

活动

继承自ClickDetector活动

属性

ActivatedCursorIcon

ContentId
读取并联

将鼠标悬停在此DragDetector的父级上时,显示鼠标标志。如果此属性为空,探测器将使用默认图标。

要更改激活的鼠标标志,将此属性设置为您想要使用的图像的资产 ID 。

ApplyAtCenterOfMass

读取并联

当 false (默认) 时,约束力量在用户单击的点上应用。 当 true 时,力量在对象的中心 масс中应用。 只有在 ResponseStyleEnum.DragDetectorResponseStyle.Physical 和父对象未锚定时才相关。

未复制
读取并联

移动的主轴,与参考框相对。 对于 DragStyle 的 枚.拖动测试拖式</枚>,方向的转换; 对于 Class.DragDetectorDragStyle.

DragFrame

读取并联

如果 ReferenceInstance 已设置, pivot 的引用框相对于参考框;否则, pivot 的引用框相对于拖动开始时 pivot 的框。

读取并联

用于生成所提交的移动,并且给予一个流量的鼠标射线。请参阅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 平面上。 更改此值会自动更新 1> Class.DragDetector.Axis|Axis1>

读取并联

控制玩家可以与 DragDetector 交互的权限级别。默认为 Enum.DragDetectorPermissionPolicy.Everybody

ReferenceInstance

读取并联

一个实例 whose CFrame 是拖动探测器的参考框架。 DragFrame 是与此 CFrame 通过 1> Class.DragDetector:GetreferenceFrame()|getreference框架()1> 方法获取的。

如果此实例是一个 PVInstance ,参考框将是其中心;如果 Attachment ,世界 CFrame 将基于拖动探测器的父 2>Class.BasePart2> 或 5>Class.Model5> 。 如果

读取并联

一旦该建议的运动已计算并可能受到限制,这是使用该DragDetector 所影响的对象移动工具或不移动工具的原理。见Enum.DragDetectorResponseStyle 获取选项。

Responsiveness

读取并联

更高的值会使对象更快地达到目标。仅在 ResponseStyleEnum.DragDetectorResponseStyle.Physical 和父对象是未锚定的情况下。

RunLocally

读取并联

如果为假 (默认), 客户端向服务器发送复制信号 (DragStart ,DragContinue ,DragEnd ) 处理鼠标射线, 对数据模型进行更改, 并在向客户端重复它们.

如果是这样,客户端会自己处理这些信号,并且不会将它们复制到服务器。客户端 LocalScripts 可以用于响应这些事件,而 RemoteEvents 可以用于发送任何需要复制到服务器的更改。

SecondaryAxis

未复制
读取并联

移动的副轴。与使用 Attachments 的方向相关。

TrackballRadialPullFactor

读取并联

当鼠标位于轨道球之外时,DragDetector 可以应用一个径向拉动旋转,使球像试图向轨道球一样卷出。此属性是一个 0 到 1 的乘数,用于将该旋转作为贡献给总共。 只有在 DragStyle

TrackballRollFactor

读取并联

当鼠标位于轨道球之外时,DragDetector 可以应用一个滚动旋转,将球如果装在 vinyl 记录上,面向视窗。 此属性是一个 0 到 1 的乘数,用于将该滚动旋转添加到总和。 只有在 DragStyle

VRSwitchKeyCode

读取并联

在 VR 输入期间,Enum.KeyCodeDragStyle 用于切换副运动模式。仅适用于拖动检测器的 Class.DragDetector.DragStyle|拖动式 有主要和副主要运动模式。

WorldAxis

未复制
读取并联

世界空间中的 Axis 表示用户使用 Attachments 的方向。与 Class.DragDetector.轴|轴 的方向相关。

WorldSecondaryAxis

未复制
读取并联

世界空间中的 SecondaryAxis 与使用 Attachments 的方向有关。

方法

AddConstraintFunction

添加一个函数来修改或限制所提出的移动。该函数接受一个输入CFrame的Datatype.CFrame 的移动,并返回一个CFrame 的2> Datatype.CFrame2> 。 both the input and output are expressed relative to the reference frame. 您可

要将添加的限制函数移除,请在返回的连接对象上调用 Disconnect()

参数

priority: number

添加函数的优先级订单。更高的值取得优先权。

function: function

用于修改或限制所提交的移动。此函数接受一个输入CFrame提交的移动 ,并返回一个CFrame 的1> 修改1> 或4> 未修改4> 的移动,都与参考框架相关。


返回

使用此连接对象来移除限制函数。

GetReferenceFrame

返回在以下运动中表达的引用 CFrame ;参阅 ReferenceInstance 属性以获取更多细节。


返回

表示移动的参考 CFrame

RestartDrag

void

可以从脚本中调用以重新启动拖动使用新参数,如果参数如 DragStyleAxisSecondaryAxis 更改。


返回

void

SetDragStyleFunction

void

如果 DragStyle 设置为 Enum.DragDetectorDragStyle.Scriptable ,给出的函数调用时会受到 DragContinue

如果函数返回 nil ,对象不会移动。这对于脚本尚未收集到正确答案所需的所有信息有用,或在暂时情况下您想要对象保留在原位。

参数

function: function

监控DragContinue信号。 此函数接收信号的世界空间曲线射线,并将其返回CFrame,其中包含世界空间中心位置和方向。 如果此函数返回nil,对象不会移动。


返回

void

SetPermissionPolicyFunction

void

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 参数来启用/禁用探测器对特定玩家。它


返回

void

活动

DragContinue

DragStart 已初始化后,用户继续拖动对象时发生。

参数

playerWhoDragged: Player

那个 Player who initiated the drag through DragStart and now continue the drag.

cursorRay: Ray

Ray 从鼠标辐射到场景上。

viewFrame: CFrame

CFrame 用户的 Camera

vrInputFrame: OptionalCoordinateFrame

如果使用 VR 输入设备,手持鼠标/指针/控制器的 CFrame

isModeSwitchKeyDown: bool

如果拖动探测器的 DragStyle 具有主要和副主要移动模式,此参数表示是否使用 KeyboardModeSwitchKeyCode 、 Class.DragDetector.GamepadModeSwitchKeyCode|GamepadMode


DragEnd

当用户停止拖动对象时,火焰会立即熄灭。

参数

playerWhoDragged: Player

发起拖动的 Player ,谁通过 DragStart 拖动结束了(已发布)。


DragStart

当用户开始拖动对象时,火焰会立即点燃。

参数

playerWhoDragged: Player

Player who initiated the drag.

cursorRay: Ray

Ray 从鼠标辐射到场景上。

viewFrame: CFrame

CFrame 用户的 Camera

hitFrame: CFrame

拖动的初始化射线投射的命中框。

clickedPart: BasePart

初始化拖动的部分,被 cursor raycast 击中的部分。

vrInputFrame: OptionalCoordinateFrame

如果使用 VR 输入设备,手持鼠标/指针/控制器的 CFrame

isModeSwitchKeyDown: bool

如果拖动探测器的 DragStyle 具有主要和副主要移动模式,此参数表示是否使用 KeyboardModeSwitchKeyCode 、 Class.DragDetector.GamepadModeSwitchKeyCode|GamepadMode