Class BhapticsLibrary
Die Klasse BhapticsLibrary enthält die Funktionen zur Nutzung der Haptik-Geräte von bHaptics.
Referenzen
- Pfad: Assets\Bhaptics\SDK2\Scripts\Core\Plugins\BhapticsLibrary.cs
Statische Funktionen — Event-gesteuerte Haptik abspielen
Spielt die Haptik-Pattern ab, die an ein bestimmtes, in Designer/Portal erstelltes Haptik-Event gebunden sind. Wir empfehlen dringend, diese Funktionen zu verwenden.
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);
Spielt ein Haptik-Event ab und passt dabei Stärke, Duration und Richtung der Haptik an.
Parameters
string eventId: Name des Haptik-Events, das Sie abspielen möchten.int startMillis: Startposition der Wiedergabe in Millisekunden. Die erstenstartMillisMillisekunden des Events werden übersprungen (dies ist ein Start-Offset, keine Verzögerung vor der Wiedergabe). Der Standardwert ist0. Nur Windows/macOS/Android.float intensity: Die haptische Intensity wird mit diesem Wert multipliziert.float duration: Die haptische Duration wird mit diesem Wert multipliziert.float angleX: Dreht die Haptik gegen den Uhrzeigersinn um die globaleVector3.up. Gültiger Bereich: [0.0f-360.0f]float offsetY: Bewegt die Haptik nach oben oder unten. Gültiger Bereich: [-0.5f-0.5f]
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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);
Spielt ein Haptik-Event ab und passt dabei Stärke, Duration und Richtung der Haptik an.
Parameters
string eventId: Name des Haptik-Events, das Sie abspielen möchten.float intensity: Die haptische Intensity wird mit diesem Wert multipliziert.float duration: Die haptische Duration wird mit diesem Wert multipliziert.float angleX: Dreht die Haptik gegen den Uhrzeigersinn um die globaleVector3.up. Gültiger Bereich: [0.0f-360.0f]float offsetY: Bewegt die Haptik nach oben oder unten. Gültiger Bereich: [-0.5f-0.5f]
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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);
Spielt ein Haptik-Event ab und passt dabei die Richtung der Haptik an. Dies ist ein komfortabler Wrapper um PlayParam mit auf 1.0f festgelegtem intensity und duration.
Parameters
string eventId: Name des Haptik-Events, das Sie abspielen möchten.float angleX: Dreht die Haptik gegen den Uhrzeigersinn um die globaleVector3.up. Gültiger Bereich: [0.0f-360.0f]float offsetY: Bewegt die Haptik nach oben oder unten. Gültiger Bereich: [-0.5f-0.5f]
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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
);
Spielt die Haptik wiederholt ab. Zusätzlich können Sie, wie bei der Funktion PlayHapticWithOption, Stärke, Duration und Richtung der Haptik anpassen.
Parameters
string eventId: Name des Haptik-Events, das Sie abspielen möchten.float intensity: Die haptische Intensity wird mit diesem Wert multipliziert.float duration: Die haptische Duration wird mit diesem Wert multipliziert.float angleX: Dreht die Haptik gegen den Uhrzeigersinn um die globaleVector3.up. Gültiger Bereich: [0.0f-360.0f]float offsetY: Bewegt die Haptik nach oben oder unten. Gültiger Bereich: [-0.5f-0.5f]int interval: Das Zeitintervall zwischen den Wiederholungen, gemessen in Millisekunden.int maxCount: Die Anzahl der Wiederholungen.
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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);
Spielt die Haptik wiederholt ab. Dies ist ein komfortabler Wrapper um PlayLoop mit auf 1.0f festgelegtem intensity und duration und ohne Richtungsanpassung.
Parameters
string eventId: Name des Haptik-Events, das Sie abspielen möchten.int interval: Das Zeitintervall zwischen den Wiederholungen, gemessen in Millisekunden.int maxCount: Die Anzahl der Wiederholungen.
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
Statische Funktionen — Haptik direkt abspielen
Wenn Sie Haptik abspielen möchten, ohne ein neues Event zu erstellen, verwenden Sie diese Funktionen.
PlayMotors
public static int PlayMotors(int position, int[] motors, int durationMillis);
Spielt haptisches Feedback am angegebenen Haptik-Aktuator ab. Sie können diese Funktion verwenden, ohne ein Event zu erstellen.
Parameters
int position: Typ des Haptik-Geräts. Weitere Informationen finden Sie hier.Wert Gerät Entspricht… Motoranzahl 0TactSuit Pro PositionType.Vest32 1TactSleeve(Left) PositionType.ForearmL3 2TactSleeve(Right) PositionType.ForearmR3 3TactVisor PositionType.Head4 4Tactosy for Hands(Left) PositionType.HandL3 5Tactosy for Hands(Right) PositionType.HandR3 6Tactosy for Feet(Left) PositionType.FootL3 7Tactosy for Feet(Right) PositionType.FootR3 8TactGlove(Left) PositionType.GloveL8 9TactGlove(Right) PositionType.GloveR8 int[] motors: Legen Sie die Länge des Arrays entsprechend der Anzahl der Motoren des Geräts fest. Die Werte im Array bezeichnen die Intensity der Motoren. Gültiger Bereich für jeden Wert im Array: [0-100]int durationMillis: Die Duration der Haptik, gemessen in Millisekunden. Ein Wert größer oder gleich100wird empfohlen.
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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
);
Nur TactGlove. Spielt Haptik im TactGlove ab. Anders als bei PlayMotors können Sie die haptische Duration und die Änderungen der Vibrations-Intensity fein anpassen. Dies ermöglicht eine noch feinere Darstellung von haptischem Feedback.
Jedes Array (motorValues, playTimeValues, shapeValues) muss sechs Elemente für TactGlove DK2 oder acht Elemente für TactGlove DK3 enthalten, und alle drei Arrays müssen dieselbe Länge haben. Jede andere Länge gibt -1 zurück.
Parameters
-
PositionType positionType: Typ des Haptik-Geräts.Wert Gerät Entspricht… PositionType.GloveLTactGlove(Left) 8PositionType.GloveRTactGlove(Right) 9 -
int[] motorValues: Ein Array, das die Intensity jedes Motors darstellt. Seine Länge muss der Anzahl der Motoren im TactGlove entsprechen: sechs (TactGlove DK2) oder acht (TactGlove DK3). Die Handflächen-Motoren an den Array-Indizes6und7(in der Tabelle unten) existieren nur auf DK3. Gültiger Bereich für jeden Wert im Array: [0-100]Array Index Motor befindet sich an… 0Spitze des Daumens 1Spitze des Zeigefingers 2Spitze des Mittelfingers 3Spitze des Ringfingers 4Spitze des kleinen Fingers 5Am Handgelenk 6An der Handfläche (Daumenseite) 7An der Handfläche (Kleinfingerseite) -
GlovePlayTime[] playTimeValues: Ein Array mit derselben Länge wiemotorValues(sechs für DK2, acht für DK3), wobei jedes Element ein Zeitintervall für die Aktuierung darstellt, wobei die Zeit überGlovePlayTime-Enums definiert wird.Wert Duration Entspricht… GlovePlayTime.NoneKeine 0GlovePlayTime.FiveMS5ms 1GlovePlayTime.TenMS10ms 2GlovePlayTime.TwentyMS20ms 4GlovePlayTime.ThirtyMS30ms 6GlovePlayTime.FortyMS40ms 8 -
GloveShapeValue[] shapeValues: Ein Array mit derselben Länge wiemotorValues(sechs für DK2, acht für DK3), wobei jedes Element die Form der zeitlichen Änderung der haptischen Intensity darstellt, angegeben durch dieGloveShapeValue-Enums.Wert Waveform Entspricht… GloveShapeValue.ConstantKonstante Intensity für die Duration 0GloveShapeValue.DecreasingBeginnt bei der angegebenen Intensity und nimmt um die Hälfte ab 1GloveShapeValue.IncreasingBeginnt bei der Hälfte der angegebenen Intensity und steigt bis zur angegebenen an. 2[TactGlove DK3] Auf dem DK3-Glove ist der Handgelenk-Aktuator (Array-Index
5) ein Voice-Coil-Motor (VCM) und berücksichtigtshapeValuesnicht. Die anderen sieben Motoren wenden die Waveform-Form genauso an wie auf DK2-Gloves. -
int frequency: [Nur TactGlove DK3] Vibrationsfrequenz in Hz der eigenen Aktuatoren des DK3-Gloves. Der Standardwert ist80. Dies betrifft nur das DK3-Glove selbst und ändert nicht die Betriebsfrequenz anderer verbundener Geräte. Es hat keine Auswirkung auf DK2-Gloves oder auf den universellen (Nicht-Windows/macOS-)Pfad. Nur Windows/macOS. -
int repeatCount: Anzahl der Wiederholungen der Waveform, ab1.0spielt sie einmal ab. Nur Windows/macOS.
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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
);
Spielt Haptik um bestimmte Koordinaten herum ab. Anders als die Funktion PlayMotors, die die haptische Intensity für jeden Haptik-Aktuator einzeln angibt, gibt diese Methode die haptische Intensity für bestimmte Koordinaten an.
Bei der Angabe der Haptik-Position bietet PlayMotors eine diskrete Steuerung, während PlayPath kontinuierlicher ist. PlayMotors weist einzelnen Aktuatoren Intensity zu, während PlayPath die Angabe von Intensity für bestimmte Koordinaten ermöglicht (zwischen 0 und 1 für die X- und Y-Achse), wodurch nahegelegene Aktuatoren entsprechend vibrieren.
Sie können mehrere Koordinaten mit mehreren Intensities angeben. Beachten Sie, dass alle Aktuatoren um diese Koordinaten im Array herum gleichzeitig (zur selben Zeit) aktiviert werden, nicht nacheinander. Außerdem muss die Größe aller Arrays gleich sein.
Indem Sie diese Funktion fortlaufend aufrufen und dabei die Werte schrittweise ändern, können Sie den Effekt eines sich bewegenden Haptik-Punkts erzielen.
[TactGlove DK3] PlayPath steuert den Handgelenk-Voice-Coil-Motor (VCM) eines DK3-Gloves nicht an.

Parameters
int position: Typ des Haptik-Geräts.Wert Gerät Entspricht… 0TactSuit Pro PositionType.Vest1TactSleeve(Left) PositionType.ForearmL2TactSleeve(Right) PositionType.ForearmR3TactVisor PositionType.Head4Tactosy for Hands(Left) PositionType.HandL5Tactosy for Hands(Right) PositionType.HandR6Tactosy for Feet(Left) PositionType.FootL7Tactosy for Feet(Right) PositionType.FootR8TactGlove(Left) PositionType.GloveL9TactGlove(Right) PositionType.GloveRfloat[] xValues: Legt die X-Koordinate fest. Gültiger Bereich für jeden Wert im Array: [0.0f-1.0f]float[] yValues: Legt die Y-Koordinate fest. Gültiger Bereich für jeden Wert im Array: [0.0f-1.0f]int[] intensityValues: Legen Sie die Länge des Arrays entsprechend der Anzahl der Koordinaten fest. Die Werte im Array bezeichnen die Intensity der Koordinaten. Gültiger Bereich für jeden Wert im Array: [0-100]int duration: Die Duration der Haptik, gemessen in Millisekunden. Ein Wert größer oder gleich100wird empfohlen.
Returns
Request ID. Sie können die Request ID verwenden, um die Haptik zu stoppen. Bei einem Fehlschlag wird -1 zurückgegeben.
Bei Verbindung mit dem Hub geben fehlgeschlagene Aufrufe jedoch kein -1 zurück, da der Hub keinen Rückgabewert bereitstellt.
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
);
}
}
Statische Funktionen — Sonstige
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)
Stoppt das Haptik-Event anhand der Event ID. Gibt zurück, ob das Stoppen erfolgreich war.
StopInt
public static bool StopInt(int requestId)
Stoppt das Haptik-Event anhand der Request ID, die von der Funktion zurückgegeben wird, die die Haptik ausführt. Gibt zurück, ob das Stoppen erfolgreich war.
StopAll
public static bool StopAll()
Stoppt alle aktuell abgespielten Haptiken. Gibt zurück, ob das Stoppen erfolgreich war.
IsPlaying
public static bool IsPlaying()
Prüft, ob aktuell eine Haptik abgespielt wird.
IsPlayingByEventId
public static bool IsPlayingByEventId(string eventId)
Prüft, ob das Haptik-Event für diese Event ID aktuell abgespielt wird.
IsPlayingByRequestId
public static bool IsPlayingByRequestId(int requestId)
Prüft, ob das Haptik-Event für diese Request ID aktuell abgespielt wird.
PauseByEventId
public static void PauseByEventId(string eventId)
Pausiert ein aktives Haptik-Event. Verwenden Sie PauseByEventId(string eventId), um ein bestimmtes Haptik-Event zu pausieren. Das pausierte Event kann später mit ResumeByEventId(string eventId) fortgesetzt werden.
ResumeByEventId
public static void ResumeByEventId(string eventId)
Setzt ein pausiertes Haptik-Event fort. Verwenden Sie ResumeByEventId(string eventId), um die Wiedergabe an der Position fortzusetzen, an der sie pausiert wurde.