【Godot4】コントローラー(ジョイパッド)を振動させる

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Godot4】コントローラー(ジョイパッド)を振動させる

2023-9-28 | ,

Godot4で振動に対応してるコントローラーを振動させたい!

概要

今回の記事では、Godot4で振動に対応してるコントローラーを振動させる手順を掲載する。

仕様書

環境

  • Gogot 4.1.1

手順書

あらかじめ「Project」->「Project Settings...」の「Input Map」で下記のような感じでマウス(タップ)にアクションを設定しておく。

Name Event
weak_vibrate Joypad Button 0 (Xbox A)
strong_vibrate Joypad Button 1 (Xbox B)
long_vibrate Joypad Button 2 (Xbox X)
stop_vibrate Joypad Button 3 (Xbox Y)

スクリプトは下記のような感じ。

extends Node2D

func _process(delta):
    if Input.is_action_just_pressed("weak_vibrate"):
        Input.start_joy_vibration(0, 1, 0, 1)
    elif Input.is_action_just_pressed("strong_vibrate"):
        Input.start_joy_vibration(0, 0, 1, 1)
    elif Input.is_action_just_pressed("long_vibrate"):
        Input.start_joy_vibration(0, 1, 0, 10)
    elif Input.is_action_just_pressed("stop_vibrate"):
        Input.stop_joy_vibration(0)

使ってるコントローラーがXBOXのものだとして説明すると、Aボタンを押すと弱振動のモーターが1秒間振動する。Bボタンを押すと強振動のモーターが1秒間振動する。Xボタンを押すと弱振動のモーターが10秒間振動する。Yボタンを押すと振動を停止する。。

説明

Input.start_joy_vibration関数で振動を開始する。各引数は下記のような感じ。

第n引数 説明
1 int 0から始まるデバイスの番号。
2 float 弱振動(軽く早い感じ?)のモーターの強度を0.01.0の間で設定。
3 float 強振動(重い感じ?)のモーターの強度を0.01.0の間で設定。
4 float 振動する時間。

Input.stop_joy_vibration関数で振動してるデバイスの振動を止める。引数で振動を止めるデバイスの番号を設定する。

まとめ(感想文)

キーボード&マウス派なので振動ってなんだか斬新&ノスタルジック。

引用・参考文献

下記の公式のリファレンスを参考にさせていただきました。