DragDetector
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
La instancia DragDetector facilita y alienta la interacción con objetos 3D en una experiencia, como abrir puertas y cajones, deslizar una parte alrededor, y mucho más.Las características clave incluyen:
Coloca un DragDetector bajo cualquier BasePart o Model para hacerlo arrastrable a través de todas las entradas (ratón, toque, controlador para juegoy VR), todo sin una sola línea de código.
Elige entre varias opciones DragStyle , define cómo responde el objeto a la movilidad a través de ResponseStyle , y aplica opcionalmente límites de eje o movimiento.
Los scripts pueden responder a la manipulación de objetos arrastrados para conducir la interfaz de usuario o tomar decisiones lógicas, como ajustar el nivel de luz en una habitación basado en un dimmer de pared deslizante.
Los jugadores pueden manipular piezas o modelos anclados y se quedarán exactamente donde los pongas al lanzamiento.
DragDetectors trabaja en Studio mientras tengas no usando las herramientas Seleccionar , Mover , Escalar o Rotar , lo que facilita probar y ajustar objetos arrastrables mientras se edita.
Consulte la guía Detectores de arrastrado 3D para detalles y ejemplos de uso.
Resumen
Propiedades
Establece el icono del cursor para mostrar cuando el mouse está activado sobre el padre de este DragDetector .
Si se aplica la fuerza de restricción al centro de masa del objeto.
El eje principal de movimiento, expresado en relación con el marco de referencia.
El CFrame del pivote, dependiente del detector de arrastre de ReferenceInstance.
El paradigma utilizado para generar la propuesta de movimiento.
Si el DragDetector responde a la entrada del usuario.
Durante la entrada del gamepad, el modificador Enum.KeyCode para el modo secundario de movimiento.
Durante la entrada del teclado, el modificador Enum.KeyCode para el modo secundario de movimiento.
Junto con MinDragAngle, impide las intentos del detector de arrastre de generar movimiento.
Junto con MinDragTranslation, impide las intentos del detector de arrastre de generar movimiento.
Fuerza máxima aplicada al objeto para alcanzar su objetivo.
Máximo par aplicado al objeto para alcanzar su objetivo.
Junto con MaxDragAngle, impide las intentos del detector de arrastre de generar movimiento.
Junto con MaxDragTranslation, impide las intentos del detector de arrastre de generar movimiento.
Specifica la rotación YXZ de los ejes de movimiento relativa al marco de referencia.
Controla el nivel de permiso para el cual los jugadores pueden interactuar con el DragDetector .
Una instancia cuyo CFrame es el marco de referencia para el detector de arrastre.
El paradigma utilizado para herramienta de movimiento, o no herramienta de movimiento, los objetos afectados por el detector de arrastre.
Los valores más altos hacen que el objeto alcance su objetivo más rápidamente.
Si la entrada del usuario en un DragDetector se replica al servidor o se queda local para el cliente específico.
El eje secundario del movimiento.
Si DragStyle es Enum.DragDetectorDragStyle.RotateTrackball , multiplicador para agregar una rotación de tracción radial como contribución al total.
Si DragStyle es Enum.DragDetectorDragStyle.RotateTrackball , multiplicador para agregar rotación de rodillo a la suma total.
Durante la entrada VR, el modificador Enum.KeyCode para el modo secundario de movimiento.
El Axis expresado en el espacio mundial.
El SecondaryAxis expresado en el espacio mundial.
Establece el icono del cursor para mostrar cuando el mouse se desplaza sobre el padre de este ClickDetector o DragDetector .
Distancia máxima entre un personaje y el ClickDetector o DragDetector para que el jugador pueda interactuar con él.
Métodos
Añade una función para modificar o limitar el movimiento propuesto.
Devuelve la referencia CFrame en la que se expresa el movimiento.
Puede invocarse desde un script para reiniciar el arrastre usando nuevos parámetros.
Pasa una función para usar si y solo si DragStyle está configurado como Enum.DragDetectorDragStyle.Scriptable.
Pasa una función para usar si y solo si PermissionPolicy está configurado como Enum.DragDetectorPermissionPolicy.Scriptable.
Eventos
- DragContinue(playerWhoDragged : Player,cursorRay : Ray,viewFrame : CFrame,vrInputFrame : OptionalCoordinateFrame,isModeSwitchKeyDown : boolean):RBXScriptSignal
Se enciende cuando un usuario continúa arrastrando el objeto después de que DragStart se haya iniciado.
Se activa cuando un usuario deja de arrastrar el objeto.
Se activa cuando un usuario comienza a arrastrar el objeto.
Se enciende cuando un jugador interactúa con el padre de un ClickDetector o DragDetector .
Se enciende cuando el padre de un ClickDetector o DragDetector se desplaza sobre un jugador.
Se enciende cuando el cursor de un jugador se desplaza fuera del padre de un ClickDetector o DragDetector .
Se enciende cuando un jugador hace clic derecho con el mouse en el cursor en un ClickDetector o DragDetector.
Propiedades
ActivatedCursorIcon
Establece el icono del cursor para mostrar cuando el mouse está activado sobre el padre de este DragDetector .Si esta propiedad se deja en blanco, el detector usará el íconopredeterminado.
Para cambiar el íconodel cursor activado, establece esta propiedad en el ID de activo de la imagen que te gustaría usar.
ApplyAtCenterOfMass
Cuando es falso (por defecto), se aplica la fuerza de restricción en el punto en el que el usuario hace clic.Cuando es verdadero, se aplica la fuerza en el centro de masa del objeto.Solo es relevante si ResponseStyle es Enum.DragDetectorResponseStyle.Physical y el objeto padre no está anclado.
Axis
El eje principal de movimiento, expresado en relación con el marco de referencia.Para un DragStyle de Enum.DragDetectorDragStyle.TranslateLine , la dirección de traducción; para Enum.DragDetectorDragStyle.TranslatePlane , la normal al plano de movimiento; para Enum.DragDetectorDragStyle.RotateAxis , el eje de rotación de 1D.Cambiar este valor actualiza automáticamente Orientation y viceversa.
DragFrame
Si ReferenceInstance está establecer, el CFrame del pivote relativo al marco de referencia; de lo contrario, el CFrame del pivote relativo a su marco al comienzo del arrastre.
DragStyle
El paradigma utilizado para generar la propuesta de movimiento, dado un flujo de rayos del cursor. Vea Enum.DragDetectorDragStyle para las opciones.
GamepadModeSwitchKeyCode
Durante la entrada del gamepad, el Enum.KeyCode para alternar el modo secundario de movimiento.Solo se aplica si el detector de arrastre tiene DragStyle ambos modos de movimiento primario y secundario.
KeyboardModeSwitchKeyCode
Durante la entrada del teclado, el Enum.KeyCode para alternar el modo secundario de movimiento.Solo se aplica si el detector de arrastre tiene DragStyle ambos modos de movimiento primario y secundario.
MaxDragAngle
Si esto es mayor que MinDragAngle, la traducción se recortará dentro de ese rango.
Esto no es una restricción; simplemente impide que los intentos del detector de arrastre generen movimiento para permanecer dentro de los límites.Vea AddConstraintFunction() para agregar una restricción personalizada a un arrastrado.
Solo es relevante si DragStyle es Enum.DragDetectorDragStyle.RotateAxis.
MaxDragTranslation
En cualquier dimensión, si esto es mayor que MinDragTranslation, la traducción se recortará dentro de ese rango.
Esto no es una restricción; simplemente impide que los intentos del detector de arrastre generen movimiento para permanecer dentro de los límites.Vea AddConstraintFunction() para agregar una restricción personalizada a un arrastrado.
MaxForce
Fuerza máxima aplicada al objeto para alcanzar su objetivo. Solo es relevante si ResponseStyle es Enum.DragDetectorResponseStyle.Physical y el objeto padre no está anclado.
MaxTorque
Máximo momento de torsión aplicado al objeto para alcanzar su objetivo. Solo es relevante si ResponseStyle es Enum.DragDetectorResponseStyle.Physical y el objeto padre no está anclado.
MinDragAngle
Si esto es menos de MaxDragAngle, la traducción se recortará dentro de ese rango.
Esto no es una restricción; simplemente impide que los intentos del detector de arrastre generen movimiento para permanecer dentro de los límites.Vea AddConstraintFunction() para agregar una restricción personalizada a un arrastrado.
Solo es relevante si DragStyle es Enum.DragDetectorDragStyle.RotateAxis.
MinDragTranslation
En cualquier dimensión, si esto es menos de MaxDragTranslation , la traducción se recortará dentro de ese rango.
Esto no es una restricción; simplemente impide que los intentos del detector de arrastre generen movimiento para permanecer dentro de los límites.Vea AddConstraintFunction() para agregar una restricción personalizada a un arrastrado.
Orientation
Specifica la rotación YXZ de los ejes de movimiento relativos al marco de referencia (no cambia la orientación del propio marco de referencia).La traducción lineal y la rotación axial estarán en este eje reorientado Y y la traducción plana en el plano XZ .Cambiar este valor actualiza automáticamente Axis y viceversa.
PermissionPolicy
Controla el nivel de permiso para el cual los jugadores pueden interactuar con el DragDetector . El predeterminado es Enum.DragDetectorPermissionPolicy.Everybody .
ReferenceInstance
Una instancia cuyo CFrame es el marco de referencia para el detector de arrastre.El DragFrame se expresa en relación con este CFrame que se puede recuperar a través del método GetReferenceFrame().
Si esta instancia es un PVInstance , el marco de referencia será su pivote; si es un Attachment , entonces su mundo será CFrame .Si es nil o ninguno de los anteriores, el marco de referencia se basará en el pivote del padre del detector de arrastre BasePart o Model .
ResponseStyle
Una vez que se haya calculado y potencialmente restringido la moción propuesta, este es el paradigma utilizado para herramienta de movimiento, o no herramienta de movimiento, los objetos afectados por el DragDetector .Vea Enum.DragDetectorResponseStyle para opciones.
Responsiveness
Los valores más altos hacen que el objeto alcance su objetivo más rápidamente. Solo es relevante si ResponseStyle es Enum.DragDetectorResponseStyle.Physical y el objeto padre no está anclado.
RunLocally
Si es falso (por defecto), el cliente envía señales replicadas (DragStart, DragContinue, DragEnd) al servidor que procesa los rayos del cursor, realiza cambios en el aplicación de modeladode datos y los replica hacia los clientes.
Si es verdadero, el cliente procesa esas señales por sí mismo y no las replica al servidor.El cliente LocalScripts se puede utilizar para responder a estos eventos y RemoteEvents se puede utilizar para enviar cualquier cambio resultante que deba replicarse al servidor.
SecondaryAxis
El eje secundario del movimiento. Se relaciona con la orientación utilizando el mismo paradigma que Attachments .
TrackballRadialPullFactor
Cuando el cursor está fuera del trackball, el DragDetector puede aplicar una rotación de fuerza radial que gira la bola como si estuviera tratando de rodar hacia el cursor.Esta propiedad es un multiplicador de 0 a 1 para agregar esa rotación como una contribución al total.Solo es relevante si DragStyle es Enum.DragDetectorDragStyle.RotateTrackball.
TrackballRollFactor
Cuando el cursor está fuera del trackball, el DragDetector puede aplicar una rotación de rodillo que gira la bola como si estuviera montada en un registro de vinilo que se enfrenta al espectador.Esta propiedad es un multiplicador de 0 a 1 para agregar esa rotación de rodillo al total.Solo es relevante si DragStyle es Enum.DragDetectorDragStyle.RotateTrackball.
VRSwitchKeyCode
Durante la entrada VR, el Enum.KeyCode para alternar el modo secundario de movimiento.Solo se aplica si el detector de arrastre tiene DragStyle ambos modos de movimiento primario y secundario.
WorldAxis
El Axis expresado en el espacio mundial. Se relaciona con la orientación usando el mismo paradigma que Attachments .
WorldSecondaryAxis
El SecondaryAxis expresado en el espacio mundial. Se relaciona con la orientación usando el mismo paradigma que Attachments .
Métodos
AddConstraintFunction
Añade una función para modificar o limitar el movimiento propuesto.La función toma una entrada CFrame de la moción propuesta **** y devuelve una entrada CFrame de la moción modificada **** o no modificada.Ambas entradas y salidas se expresan en relación con el marco de referencia.Puedes agregar múltiples funciones que se llamarán en orden por priority , pasando los resultados en una cadena.
Para eliminar una función de restricción agregada, llame a Disconnect() en el objeto de conexión devuelto.
Parámetros
El orden de prioridad para las funciones agregadas a través de este método. Los valores más altos tienen precedencia sobre los valores más bajos.
Devuelve
Usa este objeto de conexión para eliminar la función de restricción.
GetReferenceFrame
Devuelve la referencia CFrame en la que se expresa el movimiento; vea la propiedad ReferenceInstance para más detalles.
Devuelve
RestartDrag
Puede invocarse desde un script para reiniciar el arrastre usando nuevos parámetros, si los parámetros como DragStyle, Axis o SecondaryAxis cambian.
Devuelve
SetDragStyleFunction
Pasa una función para usar si y solo si DragStyle está configurado como Enum.DragDetectorDragStyle.Scriptable.La función dada se llama al responder a una señal DragContinue , recibe el rayo del cursor del mundo de la señal con el tipo Ray , y devuelve un CFrame que contiene la ubicación y orientación deseada del pivote en el espacio mundial.
Si la función devuelve nil, el objeto no se moverá.Esto es útil si el script aún no ha recopilado toda la información que necesita para dar la respuesta correcta, o en casos temporales en los que quieres que el objeto se quede donde está.
Parámetros
Función para monitorear señales DragContinue de alerta.Esta función recibe el rayo del cursor del espacio mundial de la señal y devuelve un CFrame que contiene la ubicación y orientación deseada del pivote en el espacio mundial.Si esta función devuelve nil , el objeto no se moverá.
Devuelve
SetPermissionPolicyFunction
Pasa una función para usar si y solo si PermissionPolicy está configurado como Enum.DragDetectorPermissionPolicy.Scriptable.La función dada acepta un parámetro Player para activar/desactivar el detector para un jugador específico.También recibe un parámetro part que indica qué específico BasePart se hizo clic, como una parte dentro de un elemento arrastrable Model ; esto es útil para habilitar/deshabilitar el detector en función del valor Name , Color , HasTag() del elemento, o de otros detalles.
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)
Parámetros
Función para establecer la interactividad del detector.Esta función acepta un parámetro Player para activar/desactivar el detector para un jugador específico.También recibe un parámetro part que indica qué específico BasePart se hizo clic, como una parte dentro de un elemento arrastrable Model ; esto es útil para habilitar/deshabilitar el detector en función del valor Name , Color , HasTag() del elemento, o de otros detalles.
Devuelve
Eventos
DragContinue
Se enciende cuando un usuario continúa arrastrando el objeto después de que DragStart se haya iniciado.
Parámetros
Si se utiliza un dispositivo de entrada VR, el CFrame de la mano que sostiene el cursor/visor/controlador.
Si el detector de arrastre tiene DragStyle ambos modos de movimiento primario y secundario, este parámetro indica si el usuario está presionando la entrada modificadora definida a través de KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode o VRSwitchKeyCode .
DragEnd
Se activa cuando un usuario deja de arrastrar el objeto.
Parámetros
DragStart
Se activa cuando un usuario comienza a arrastrar el objeto.
Parámetros
El marco de golpe del rayo del cursor que inició el arrastre.
La parte que fue golpeada por el raycast del cursor que inició el arrastre.
Si se utiliza un dispositivo de entrada VR, el CFrame de la mano que sostiene el cursor/visor/controlador.
Si el detector de arrastre tiene DragStyle ambos modos de movimiento primario y secundario, este parámetro indica si el usuario está presionando la entrada modificadora definida a través de KeyboardModeSwitchKeyCode , GamepadModeSwitchKeyCode o VRSwitchKeyCode .