Saltar al contenido principal
Esta página se tradujo automáticamente y puede contener errores. Ver el original en inglés

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 primeros startMillis milisegundos del evento (es un Offset de inicio, no un retardo antes de la reproducción). El valor predeterminado es 0. 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 del Vector3.up global. 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 del Vector3.up global. 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 del Vector3.up global. 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 del Vector3.up global. 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í.
    ValorDispositivoEquivale a...Cantidad de motores
    0TactSuit ProPositionType.Vest32
    1TactSleeve(izquierdo)PositionType.ForearmL3
    2TactSleeve(derecho)PositionType.ForearmR3
    3TactVisorPositionType.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 a 100.

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.

    ValorDispositivoEquivale a…
    PositionType.GloveLTactGlove(izquierdo)8
    PositionType.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 array 6 y 7 (en la tabla a continuación) existen solo en DK3. Rango válido para cada valor del array: [0 - 100]

    Índice de arrayPosició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 que motorValues (seis para DK2, ocho para DK3), donde cada elemento representa un intervalo de tiempo de actuación, con el tiempo definido mediante los enumeradores GlovePlayTime.

    ValorDurationEquivale a…
    GlovePlayTime.NoneNinguna0
    GlovePlayTime.FiveMS5ms1
    GlovePlayTime.TenMS10ms2
    GlovePlayTime.TwentyMS20ms4
    GlovePlayTime.ThirtyMS30ms6
    GlovePlayTime.FortyMS40ms8
  • GloveShapeValue[] shapeValues: Array con la misma longitud que motorValues (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 enumeradores GloveShapeValue.

    ValorForma de ondaEquivale a…
    GloveShapeValue.ConstantIntensity constante durante la Duration0
    GloveShapeValue.DecreasingComienza con la Intensity especificada y disminuye a la mitad1
    GloveShapeValue.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 refleja shapeValues. 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 es 80. 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 de 1. 0 la 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.

Frame 82.png

Parameters

  • int position: Tipo de dispositivo háptico.
    ValorDispositivoEquivale a...
    0TactSuit ProPositionType.Vest
    1TactSleeve(izquierdo)PositionType.ForearmL
    2TactSleeve(derecho)PositionType.ForearmR
    3TactVisorPositionType.Head
    4Tactosy for Hands(izquierdo)PositionType.HandL
    5Tactosy for Hands(derecho)PositionType.HandR
    6Tactosy for Feet(izquierdo)PositionType.FootL
    7Tactosy for Feet(derecho)PositionType.FootR
    8TactGlove(izquierdo)PositionType.GloveL
    9TactGlove(derecho)PositionType.GloveR
  • float[] 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 a 100.

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ó.