Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

忘れそうなので自分用メモとして残しておきます。
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】ゲームパッドを振動させてみる

inu_inuinu
試験的作成。unityでアプリやゲームをほそぼそと制作していきます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away