忘れそうなので自分用メモとして残しておきます。
Unity 2019.4で確認済みです。
今回はこちらのXInputDotNetというライブラリを使用させていただきました。
とても助かりました。感謝。
https://github.com/speps/XInputDotNet.git
手順
上にある最新のunityPackageをプロジェクトにインポートして
VibrationTest.cs
XInputDotNetPure.GamePad.SetVibration(0,5,5);
この一行で振動してくれました。お手軽。
左右別々のモーターをそれぞれ動かすことができるようです。
例
例えばこんな風にテスト用のスクリプトを書いてみました。
VibrationTest.cs
using System.Collections;
using UnityEngine;
using XInputDotNetPure;
public class VibrationTest : MonoBehaviour
{
[SerializeField] float right_power = 1;
[SerializeField] float left_power = 1;
[SerializeField] float duration = 0.5f;
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
StartCoroutine("RightVibration");
}
if (Input.GetButtonDown("Fire2"))
{
StartCoroutine("LeftVibration");
}
}
IEnumerator RightVibration()
{
GamePad.SetVibration(0, 0, right_power);
yield return new WaitForSecondsRealtime(duration);
GamePad.SetVibration(0, 0, 0);
}
IEnumerator LeftVibration()
{
GamePad.SetVibration(0, left_power, 0);
yield return new WaitForSecondsRealtime(duration);
GamePad.SetVibration(0, 0, 0);
}
}
今のところ0をセットすることで振動を止めていますが、これでいいのでしょうか…