Class BhapticsLibrary
La clase BhapticsLibrary contiene las funciones para usar dispositivos hápticos de bHaptics.
Referencias
- Ruta: Assets\Bhaptics\SDK2\Scripts\Core\Plugins\BhapticsLibrary.cs
Funciones estáticas — Reproducción de háptica basada en eventos
Reproduce los patrones hápticos vinculados a un evento háptico específico creado en Designer/Portal. Se recomienda encarecidamente utilizar estas funciones.
Play
public static int Play(string eventId, int startMillis = 0, float intensity = 1f, float duration = 1.0f, float angleX = 0.0f, float offsetY = 0.0f);
Reproduce un evento háptico ajustando la intensidad, Duration y dirección de la háptica.
Parameters
string eventId: Nombre del evento háptico que se desea reproducir.int startMillis: Posición de inicio de reproducción en milisegundos. Se omiten los primerosstartMillismilisegundos del evento (es un Offset de inicio, no un retardo antes de la reproducción). El valor predeterminado es0. Solo para Windows/macOS/Android.float intensity: La Intensity háptica se multiplica por este valor.float duration: La Duration háptica se multiplica por este valor.float angleX: Rota la háptica en sentido antihorario alrededor delVector3.upglobal. Rango válido: [0.0f-360.0f]float offsetY: Mueve la háptica hacia arriba o hacia abajo. Rango válido: [-0.5f-0.5f]
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Example
using Bhaptics.SDK2;
public class Example : MonoBehaviour
{
private void OnShoot()
{
// Assume the event name is "shootpistol"
// BASIC USAGE
BhapticsLibrary.Play(BhapticsEvent.SHOOTPISTOL);
// or
BhapticsLibrary.Play("shootpistol");
// ADVANCED USAGE
BhapticsLibrary.Play(
BhapticsEvent.SHOOTPISTOL, // Haptic name
0, // Playback start position (millisecond)
1.0f, // Haptic intensity
1.0f, // Haptic duration
20.0f, // Rotate haptic around global Vector3.up (0f - 360f)
0.3f // Move haptic up or down (-0.5f - 0.5f)
);
}
}
PlayParam
public static int PlayParam(string eventId, float intensity = 1.0f, float duration = 1.0f, float angleX = 0.0f, float offsetY = 0.0f);
Reproduce un evento háptico ajustando la intensidad, Duration y dirección de la háptica.
Parameters
string eventId: Nombre del evento háptico que se desea reproducir.float intensity: La Intensity háptica se multiplica por este valor.float duration: La Duration háptica se multiplica por este valor.float angleX: Rota la háptica en sentido antihorario alrededor delVector3.upglobal. Rango válido: [0.0f-360.0f]float offsetY: Mueve la háptica hacia arriba o hacia abajo. Rango válido: [-0.5f-0.5f]
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Example
using Bhaptics.SDK2;
public class Example : MonoBehaviour
{
private void OnShoot()
{
BhapticsLibrary.PlayParam(
BhapticsEvent.SHOOTPISTOL, // Haptic name
1.0f, // Haptic intensity
1.0f, // Haptic duration
20.0f, // Rotate haptic around global Vector3.up (0f - 360f)
0.3f // Move haptic up or down (-0.5f - 0.5f)
);
}
}
PlayAngle
public static int PlayAngle(string eventId, float angleX, float offsetY);
Reproduce un evento háptico ajustando la dirección de la háptica. Es un envoltorio de conveniencia de PlayParam con intensity y duration fijos en 1.0f.
Parameters
string eventId: Nombre del evento háptico que se desea reproducir.float angleX: Rota la háptica en sentido antihorario alrededor delVector3.upglobal. Rango válido: [0.0f-360.0f]float offsetY: Mueve la háptica hacia arriba o hacia abajo. Rango válido: [-0.5f-0.5f]
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
PlayLoop
public static int PlayLoop(
string eventId,
float intensity = 1.0f,
float duration = 1.0f,
float angleX = 0.0f,
float offsetY = 0.0f,
int interval = 200,
int maxCount = 999999
);
Reproduce la háptica de forma repetida. Además, al igual que la función PlayHapticWithOption, permite ajustar la intensidad, Duration y dirección de la háptica.
Parameters
string eventId: Nombre del evento háptico que se desea reproducir.float intensity: La Intensity háptica se multiplica por este valor.float duration: La Duration háptica se multiplica por este valor.float angleX: Rota la háptica en sentido antihorario alrededor delVector3.upglobal. Rango válido: [0.0f-360.0f]float offsetY: Mueve la háptica hacia arriba o hacia abajo. Rango válido: [-0.5f-0.5f]int interval: El intervalo de tiempo entre repeticiones, medido en milisegundos.int maxCount: El número de repeticiones.
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Example
using Bhaptics.SDK2;
public class Example : MonoBehaviour
{
private void OnShoot()
{
BhapticsLibrary.PlayLoop(
BhapticsEvent.SHOOTPISTOL, // Haptic name
1.0f, // Haptic intensity
1.0f, // Haptic duration
20.0f, // Rotate haptic around global Vector3.up (0f - 360f)
0.3f, // Move haptic up or down (-0.5f - 0.5f)
200, // Loop interval time (millisecond)
999999 // Loop count
);
}
}
PlayLoopOnly
public static int PlayLoopOnly(string eventId, int interval = 200, int maxCount = 999999);
Reproduce la háptica de forma repetida. Es un envoltorio de conveniencia de PlayLoop con intensity y duration fijos en 1.0f y sin ajuste de dirección.
Parameters
string eventId: Nombre del evento háptico que se desea reproducir.int interval: El intervalo de tiempo entre repeticiones, medido en milisegundos.int maxCount: El número de repeticiones.
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Funciones estáticas — Reproducción directa de háptica
Si desea reproducir háptica sin crear un nuevo evento, utilice estas funciones.
PlayMotors
public static int PlayMotors(int position, int[] motors, int durationMillis);
Reproduce retroalimentación háptica en el actuador háptico específico. Puede usar esta función sin crear un evento.
Parameters
int position: Tipo de dispositivo háptico. Para más información, consulte aquí.Valor Dispositivo Equivale a... Cantidad de motores 0TactSuit Pro PositionType.Vest32 1TactSleeve(izquierdo) PositionType.ForearmL3 2TactSleeve(derecho) PositionType.ForearmR3 3TactVisor PositionType.Head4 4Tactosy for Hands(izquierdo) PositionType.HandL3 5Tactosy for Hands(derecho) PositionType.HandR3 6Tactosy for Feet(izquierdo) PositionType.FootL3 7Tactosy for Feet(derecho) PositionType.FootR3 8TactGlove(izquierdo) PositionType.GloveL8 9TactGlove(derecho) PositionType.GloveR8 int[] motors: Defina la longitud del array según el número de motores del dispositivo. Los valores del array representan la Intensity de cada motor. Rango válido para cada valor del array: [0-100]int durationMillis: La Duration de la háptica, medida en milisegundos. Se recomienda un valor mayor o igual a100.
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Example
using Bhaptics.SDK2;
public class Example : MonoBehaviour
{
private void OnCall()
{
// TactSuit Pro has 32 motors, so length of array should be 32 too.
int[] MotorValueArray = new int[] {
50, 40, 30, 20, 10, 50, 40, 30,
50, 40, 30, 20, 10, 50, 40, 30,
50, 40, 30, 20, 10, 50, 40, 30,
50, 40, 30, 20, 10, 50, 40, 30,
};
BhapticsLibrary.PlayMotors(
(int)PositionType.Vest, // Device type
MotorValueArray, // Haptic intensities
500 // Haptic duration (millisecond)
);
}
}
PlayWaveform
public static int PlayWaveform(
PositionType positionType,
int[] motorValues,
GlovePlayTime[] playTimeValues,
GloveShapeValue[] shapeValues,
int frequency = 80,
int repeatCount = 0
);
Solo para TactGlove. Reproduce háptica en TactGlove. A diferencia de PlayMotors, permite ajustar con precisión la Duration háptica y los cambios de Intensity de vibración. Esto permite una expresión aún más detallada de la retroalimentación háptica.
Cada array (motorValues, playTimeValues, shapeValues) debe tener seis elementos para TactGlove DK2 u ocho elementos para TactGlove DK3, y los tres arrays deben tener la misma longitud. Cualquier otra longitud devuelve -1.
Parameters
-
PositionType positionType: Tipo de dispositivo háptico.Valor Dispositivo Equivale a… PositionType.GloveLTactGlove(izquierdo) 8PositionType.GloveRTactGlove(derecho) 9 -
int[] motorValues: Array que representa la Intensity de cada motor. Su longitud debe coincidir con el número de motores del TactGlove: seis (TactGlove DK2) u ocho (TactGlove DK3). Los motores de la palma en los índices de array6y7(en la tabla a continuación) existen solo en DK3. Rango válido para cada valor del array: [0-100]Índice de array Posición del motor 0Punta del pulgar 1Punta del dedo índice 2Punta del dedo medio 3Punta del dedo anular 4Punta del dedo meñique 5En la muñeca 6En la palma (lado del pulgar) 7En la palma (lado del meñique) -
GlovePlayTime[] playTimeValues: Array con la misma longitud quemotorValues(seis para DK2, ocho para DK3), donde cada elemento representa un intervalo de tiempo de actuación, con el tiempo definido mediante los enumeradoresGlovePlayTime.Valor Duration Equivale a… GlovePlayTime.NoneNinguna 0GlovePlayTime.FiveMS5ms 1GlovePlayTime.TenMS10ms 2GlovePlayTime.TwentyMS20ms 4GlovePlayTime.ThirtyMS30ms 6GlovePlayTime.FortyMS40ms 8 -
GloveShapeValue[] shapeValues: Array con la misma longitud quemotorValues(seis para DK2, ocho para DK3), donde cada elemento representa la forma de los cambios de Intensity háptica a lo largo del tiempo, especificada mediante los enumeradoresGloveShapeValue.Valor Forma de onda Equivale a… GloveShapeValue.ConstantIntensity constante durante la Duration 0GloveShapeValue.DecreasingComienza con la Intensity especificada y disminuye a la mitad 1GloveShapeValue.IncreasingComienza con la mitad de la Intensity especificada y aumenta hasta la Intensity indicada. 2[TactGlove DK3] En el guante DK3, el actuador de la muñeca (índice de array
5) es un motor de bobina de voz (VCM) y no reflejashapeValues. Los otros siete motores aplican la forma de onda de la misma manera que en los guantes DK2. -
int frequency: [Solo para TactGlove DK3] Frecuencia de vibración en Hz de los actuadores propios del guante DK3. El valor predeterminado es80. Esto afecta únicamente al guante DK3 en sí y no cambia la frecuencia de operación de ningún otro dispositivo conectado. No tiene efecto en guantes DK2 ni en la ruta universal (no Windows/macOS). Solo para Windows/macOS. -
int repeatCount: Número de veces que se repite la forma de onda, a partir de1.0la reproduce una vez. Solo para Windows/macOS.
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Example
using Bhaptics.SDK2;
public class TestHaptic : MonoBehaviour
{
public void OnCall()
{
int[] motorValues = new int[8] { 50, 80, 100, 0, 0, 0, 0, 0 };
GlovePlayTime[] playTimeValues = new GlovePlayTime[8] {
GlovePlayTime.FiveMS, GlovePlayTime.TwentyMS,
GlovePlayTime.ThirtyMS, GlovePlayTime.None,
GlovePlayTime.None, GlovePlayTime.None,
GlovePlayTime.None, GlovePlayTime.None
};
GloveShapeValue[] shapeValues = new GloveShapeValue[8] {
GloveShapeValue.Constant, GloveShapeValue.Decreasing,
GloveShapeValue.Increasing, GloveShapeValue.Constant,
GloveShapeValue.Constant, GloveShapeValue.Constant,
GloveShapeValue.Constant, GloveShapeValue.Constant
};
BhapticsLibrary.PlayWaveform(
PositionType.GloveL, // Device Type
motorValues, // Intensities
playTimeValues, // Intervals
shapeValues // Intensity changing forms
);
}
}
PlayPath
public static int PlayPath(
int position,
float[] xValues,
float[] yValues,
int[] intensityValues,
int duration
);
Reproduce háptica alrededor de coordenadas específicas. A diferencia de la función PlayMotors, que especifica la Intensity háptica para cada actuador háptico individualmente, este método especifica la Intensity háptica para coordenadas particulares.
Al especificar la posición háptica, PlayMotors ofrece un control discreto, mientras que PlayPath es más continuo. PlayMotors asigna Intensity a actuadores individuales, mientras que PlayPath permite especificar Intensity para coordenadas concretas (entre 0 y 1 tanto para el eje X como para el eje Y), haciendo vibrar los actuadores cercanos en consecuencia.
Puede introducir múltiples coordenadas con múltiples intensidades. Tenga en cuenta que todos los actuadores alrededor de estas coordenadas en el array se activarán simultáneamente (al mismo tiempo), no de forma secuencial. Además, el tamaño de todos los arrays debe ser el mismo.
Llamando a esta función de forma continua mientras se modifican gradualmente los valores, se puede lograr el efecto de un punto háptico en movimiento.
[TactGlove DK3] PlayPath no acciona el motor de bobina de voz (VCM) de la muñeca en un guante DK3.

Parameters
int position: Tipo de dispositivo háptico.Valor Dispositivo Equivale a... 0TactSuit Pro PositionType.Vest1TactSleeve(izquierdo) PositionType.ForearmL2TactSleeve(derecho) PositionType.ForearmR3TactVisor PositionType.Head4Tactosy for Hands(izquierdo) PositionType.HandL5Tactosy for Hands(derecho) PositionType.HandR6Tactosy for Feet(izquierdo) PositionType.FootL7Tactosy for Feet(derecho) PositionType.FootR8TactGlove(izquierdo) PositionType.GloveL9TactGlove(derecho) PositionType.GloveRfloat[] xValues: Asigne la coordenada X. Rango válido para cada valor del array: [0.0f-1.0f]float[] yValues: Asigne la coordenada Y. Rango válido para cada valor del array: [0.0f-1.0f]int[] intensityValues: Defina la longitud del array según el número de coordenadas. Los valores del array representan la Intensity de cada coordenada. Rango válido para cada valor del array: [0-100]int duration: La Duration de la háptica, medida en milisegundos. Se recomienda un valor mayor o igual a100.
Returns
ID de solicitud. Puede usar el ID de solicitud para detener la háptica. Devuelve -1 si la llamada falla.
Sin embargo, cuando se conecta al Hub, las llamadas fallidas no devuelven -1 porque el Hub no proporciona un valor de retorno.
Example
using Bhaptics.SDK2;
/* Assumption:
- For TactSuit Pro
- Coordinate with Intensity
- (X: 0.1, Y: 0.2) Intensity 40
- (X: 0.3, Y: 0.4) Intensity 80
- (X: 0.5, Y: 0.6) Intensity 10
- Duration 500ms(=0.5 second)
*/
public class TestHaptic : MonoBehaviour
{
public void OnCall()
{
BhapticsLibrary.PlayPath(
(int)PositionType.Vest, // Device type
new float[] { 0.1f, 0.3f, 0.5f }, // X Coordinates
new float[] { 0.2f, 0.4f, 0.6f }, // Y Coordinates
new int[] { 40, 80, 10 }, // Intensities
500 // Duration
);
}
}
Funciones estáticas — Otras
using Bhaptics.SDK2;
public class TestHaptic : MonoBehaviour
{
public void OnCall()
{
int requestID = BhapticsLibrary.Play("TestHaptic");
if (BhapticsLibrary.IsPlayingByEventId("TestHaptic"))
{
BhapticsLibrary.StopByEventId("TestHaptic");
}
if (BhapticsLibrary.IsPlayingByRequestId(requestID))
{
BhapticsLibrary.StopInt(requestID);
}
if (BhapticsLibrary.IsPlaying())
{
BhapticsLibrary.StopAll();
}
}
}
StopByEventId
public static bool StopByEventId(string eventId)
Detiene el evento háptico por ID de evento. Devuelve si la detención fue exitosa.
StopInt
public static bool StopInt(int requestId)
Detiene el evento háptico utilizando el ID de solicitud devuelto por la función que ejecuta la háptica. Devuelve si la detención fue exitosa.
StopAll
public static bool StopAll()
Detiene toda la háptica que se está reproduciendo actualmente. Devuelve si la detención fue exitosa.
IsPlaying
public static bool IsPlaying()
Comprueba si hay alguna háptica reproduciéndose actualmente.
IsPlayingByEventId
public static bool IsPlayingByEventId(string eventId)
Comprueba si el evento háptico correspondiente a este ID de evento se está reproduciendo actualmente.
IsPlayingByRequestId
public static bool IsPlayingByRequestId(int requestId)
Comprueba si el evento háptico correspondiente a este ID de solicitud se está reproduciendo actualmente.
PauseByEventId
public static void PauseByEventId(string eventId)
Pausa un evento háptico activo. Use PauseByEventId(string eventId) para pausar un evento háptico específico. El evento pausado puede reanudarse posteriormente mediante ResumeByEventId(string eventId).
ResumeByEventId
public static void ResumeByEventId(string eventId)
Reanuda un evento háptico pausado. Use ResumeByEventId(string eventId) para reanudar la reproducción desde la posición en que se pausó.