LoginSignup
1
4

More than 3 years have passed since last update.

UnityでXBOXコントローラーを振動させる

Posted at

忘れそうなので自分用メモとして残しておきます。
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をセットすることで振動を止めていますが、これでいいのでしょうか…

参考

【Unity】ゲームパッドを振動させてみる

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4