こんにちは。
今私が主に使用しているコントローラのDUALSHCK4ですとStartJoypadVibrationが0を返しても振動しません。
PS4の設定でも振動するにチェックを入れて、PS4のゲームでは振動することを確認しています。
XBOXONEコントローラは振動します。
Xinput・DirectInputを切り替えられるエレコムのコントローラJC-U3613Mだと、Xinputに切り替えた場合のみ振動します。
DirectInputコントローラは振動機能はつかえないのでしょうか?
試したプログラムとそのログを下記に示します。
#include "DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 振動開始
StartJoypadVibration(DX_INPUT_PAD1, 1000, 2000, -1);
// 2秒間経過するまで待つ
WaitTimer(2000);
// DXライブラリ使用の終了処理
DxLib_End();
// ソフトの終了
return 0;
【@ JC-U3613M:XInput 振動する】
307: XInput DLL の読み込み中... 成功
313: DirectInput関係初期化処理
316: DirectInput8 の取得を試みます...成功
356: 引き続き初期化処理... 初期化成功
359: ジョイパッドの初期化...
359: XInput 対応コントローラーのチェックを開始します
360: XInput 対応コントローラー No.0 をチェック
361: XInput 対応コントローラー No.0 の接続は確認できませんでした
361: XInput 対応コントローラー No.1 をチェック
362: XInput 対応コントローラー No.1 の接続は確認できませんでした
364: XInput 対応コントローラー No.2 をチェック
365: XInput 対応コントローラー No.2 の接続は確認できませんでした
366: XInput 対応コントローラー No.3 をチェック
367: XInput 対応コントローラー No.3 の接続は確認できませんでした
368: XInput 対応コントローラーのチェック完了
369: DirectInput 対応ジョイパッドの列挙を開始します
435: DirectInput 対応入力装置を検出しました
435: Device Product GUID : 2003056e,0000,0000,00,00,50,49,44,56,49,44
436: Device Instance GUID : 23cb0480,0a00,11ef,80,01,44,45,53,54,00,00
436: DirectInputDevice8 の作成... 成功
438: DirectInputDevice の情報を取得します... 成功
438: Device Product Name : JC-U3613M - DirectXInput Mode
439: Device Instance Name : JC-U3613M - DirectXInput Mode
439: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
440: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
441: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致
1584: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功
1588: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功
1591: DirectInputDevice から取得する X軸 の値の範囲を設定... 成功
1595: DirectInputDevice から取得する Y軸 の値の範囲を設定... 成功
1599: DirectInputDevice から取得する Z軸 の値の範囲を設定... 成功
1602: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 成功
1605: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 成功
1608: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 成功
1610: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 13 個です
1611: DirectInputDevice の X軸 のデッドゾーンを設定... 成功
1614: DirectInputDevice の Y軸 のデッドゾーンを設定... 成功
1616: DirectInputDevice の Z軸 のデッドゾーンを設定... 成功
1618: DirectInputDevice の Rx軸 のデッドゾーンを設定... 成功
1622: DirectInputDevice の Ry軸 のデッドゾーンを設定... 成功
1624: DirectInputDevice の Rz軸 のデッドゾーンを設定... 成功
1626: DirectInputDevice の DirectInputEffect No.0 を作成... 失敗 Error Code :0x80004001
1627: DirectInputDevice の DirectInputEffect No.1 を作成... 失敗 Error Code :0x80004001
1629: DirectInputDevice の通知処理用の Event を作成... 成功
1630: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功
1633: DirectInputDevice のアクセス権を取得... 成功
1641: 検出した DirectInput 対応入力装置を入力ナンバー 0 で登録します
1641: 検出した DirectInput 対応入力装置の初期化は正常に終了しました
1645: DirectInput 対応ジョイパッドの列挙終了
1645: ジョイパッドの初期化は正常に終了しました
1646: マウスデバイスの初期化... 初期化成功
1647: キーボードデバイスの初期化... 初期化成功
【A JC-U3613M:DirectInput 振動しない】
247: XInput DLL の読み込み中... 成功
259: DirectInput関係初期化処理
259: DirectInput8 の取得を試みます...成功
304: 引き続き初期化処理... 初期化成功
306: ジョイパッドの初期化...
306: XInput 対応コントローラーのチェックを開始します
307: XInput 対応コントローラー No.0 をチェック
312: XInput 対応コントローラー No.0 の接続を確認しました
315: XInput 対応コントローラー No.0 を入力ナンバー 0 で登録します
315: XInput 対応コントローラー No.1 をチェック
316: XInput 対応コントローラー No.1 の接続は確認できませんでした
316: XInput 対応コントローラー No.2 をチェック
318: XInput 対応コントローラー No.2 の接続は確認できませんでした
319: XInput 対応コントローラー No.3 をチェック
321: XInput 対応コントローラー No.3 の接続は確認できませんでした
321: XInput 対応コントローラーのチェック完了
322: DirectInput 対応ジョイパッドの列挙を開始します
340: DirectInput 対応入力装置を検出しました
341: Device Product GUID : 2004056e,0000,0000,00,00,50,49,44,56,49,44
341: Device Instance GUID : 03b201d0,0a00,11ef,80,01,44,45,53,54,00,00
341: DirectInputDevice8 の作成... 成功
342: DirectInputDevice の情報を取得します... 成功
343: Device Product Name : Controller (JC-U3613M - Xinput Mode)
343: Device Instance Name : Controller (JC-U3613M - Xinput Mode)
343: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
344: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
344: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 一致
1433: 検出した DirectInput 対応入力装置の初期化を中断します
1467: DirectInput 対応ジョイパッドの列挙終了
1467: ジョイパッドの初期化は正常に終了しました
1468: マウスデバイスの初期化... 初期化成功
1471: キーボードデバイスの初期化... 初期化成功
1480: DirectInput 関連の初期化は正常に終了しました
【B XBOXONE 振動する】
244: XInput DLL の読み込み中... 成功
454: DirectInput関係初期化処理
456: DirectInput8 の取得を試みます...成功
512: 引き続き初期化処理... 初期化成功
528: ジョイパッドの初期化...
536: XInput 対応コントローラーのチェックを開始します
537: XInput 対応コントローラー No.0 をチェック
544: XInput 対応コントローラー No.0 の接続を確認しました
544: XInput 対応コントローラー No.0 を入力ナンバー 0 で登録します
545: XInput 対応コントローラー No.1 をチェック
546: XInput 対応コントローラー No.1 の接続は確認できませんでした
546: XInput 対応コントローラー No.2 をチェック
549: XInput 対応コントローラー No.2 の接続は確認できませんでした
549: XInput 対応コントローラー No.3 をチェック
551: XInput 対応コントローラー No.3 の接続は確認できませんでした
551: XInput 対応コントローラーのチェック完了
552: DirectInput 対応ジョイパッドの列挙を開始します
645: DirectInput 対応入力装置を検出しました
646: Device Product GUID : 02ff045e,0000,0000,00,00,50,49,44,56,49,44
646: Device Instance GUID : 5886ec20,0947,11ef,80,01,44,45,53,54,00,00
647: DirectInputDevice8 の作成... 成功
649: DirectInputDevice の情報を取得します... 成功
650: Device Product Name : Controller (Xbox One For Windows)
650: Device Instance Name : Controller (Xbox One For Windows)
651: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
652: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 一致
652: 検出した DirectInput 対応入力装置の初期化を中断します
658: DirectInput 対応ジョイパッドの列挙終了
659: ジョイパッドの初期化は正常に終了しました
660: マウスデバイスの初期化... 初期化成功
661: キーボードデバイスの初期化... 初期化成功
668: DirectInput 関連の初期化は正常に終了しました
【C PS4 DUALSHCK4 振動しない】
257: XInput DLL の読み込み中... 成功
262: DirectInput関係初期化処理
264: DirectInput8 の取得を試みます...成功
295: 引き続き初期化処理... 初期化成功
297: ジョイパッドの初期化...
298: XInput 対応コントローラーのチェックを開始します
298: XInput 対応コントローラー No.0 をチェック
299: XInput 対応コントローラー No.0 の接続は確認できませんでした
299: XInput 対応コントローラー No.1 をチェック
299: XInput 対応コントローラー No.1 の接続は確認できませんでした
300: XInput 対応コントローラー No.2 をチェック
300: XInput 対応コントローラー No.2 の接続は確認できませんでした
300: XInput 対応コントローラー No.3 をチェック
301: XInput 対応コントローラー No.3 の接続は確認できませんでした
301: XInput 対応コントローラーのチェック完了
301: DirectInput 対応ジョイパッドの列挙を開始します
342: DirectInput 対応入力装置を検出しました
342: Device Product GUID : 09cc054c,0000,0000,00,00,50,49,44,56,49,44
343: Device Instance GUID : db0718b0,f8f7,11ee,80,02,44,45,53,54,00,00
343: DirectInputDevice8 の作成... 成功
344: DirectInputDevice の情報を取得します... 成功
344: Device Product Name : Wireless Controller
344: Device Instance Name : Wireless Controller
345: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
345: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
345: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致
1447: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功
1448: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功
1450: DirectInputDevice から取得する X軸 の値の範囲を設定... 成功
1451: DirectInputDevice から取得する Y軸 の値の範囲を設定... 成功
1454: DirectInputDevice から取得する Z軸 の値の範囲を設定... 成功
1455: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 成功
1456: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 成功
1458: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 成功
1459: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 14 個です
1459: DirectInputDevice の X軸 のデッドゾーンを設定... 成功
1461: DirectInputDevice の Y軸 のデッドゾーンを設定... 成功
1462: DirectInputDevice の Z軸 のデッドゾーンを設定... 成功
1463: DirectInputDevice の Rx軸 のデッドゾーンを設定... 成功
1465: DirectInputDevice の Ry軸 のデッドゾーンを設定... 成功
1465: DirectInputDevice の Rz軸 のデッドゾーンを設定... 成功
1466: DirectInputDevice の DirectInputEffect No.0 を作成... 失敗 Error Code :0x80004001
1467: DirectInputDevice の DirectInputEffect No.1 を作成... 失敗 Error Code :0x80004001
1468: DirectInputDevice の通知処理用の Event を作成... 成功
1469: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功
1471: DirectInputDevice のアクセス権を取得... 成功
1478: 検出した DirectInput 対応入力装置を入力ナンバー 0 で登録します
1479: 検出した DirectInput 対応入力装置の初期化は正常に終了しました
1488: DirectInput 対応ジョイパッドの列挙終了
1489: ジョイパッドの初期化は正常に終了しました
1489: マウスデバイスの初期化... 初期化成功
1490: キーボードデバイスの初期化... 初期化成功
1491: DirectInput 関連の初期化は正常に終了しました
ご多用のところ恐れ入りますが、ご確認いただけると幸いです。