トップページ > 記事閲覧
プロコンを無線接続するとGetJoypadType()で0が帰ってくる?(情報提供求む)
名前:いれぶん 日時: 2025/12/13 12:31

プロコンをブルートゥースで接続するとGetJoypadType()で帰ってくる値が0になってプロコンと判定されません。 自分の作業環境が悪い可能性もあるので他の方がどうなってるかお聞きしたいです。 どなたか変身していただけると嬉しいです。
メンテ

Page: 1 |

Re: プロコンを無線接続するとGetJoypadType()で0が帰ってくる?(情報提供求む) ( No.1 )
名前:管理人 日時:2025/12/13 22:19

手元の環境( Windows11 25H2 )ではプロコンをブルートゥースで接続しても GetJoypadType の戻り値は 8 ( DX_PADTYPE_SWITCH_PRO_CTRL の値 )となりました
メンテ
Re: プロコンを無線接続するとGetJoypadType()で0が帰ってくる?(情報提供求む) ( No.2 )
名前:いれぶん 日時:2025/12/15 13:49

申し訳ないです。自分の環境を書くのを忘れてました。 後、他のpcで試したところ今度は-1が返ってきました。プロコンが壊れてるのかなと思ったのですが接続自体は問題なく、 DInputで入力を取ることもできるのでプロコンが壊れてる線は薄そうです。 エディション Windows 11 Pro バージョン 25H2 インストール日 &#8206;2025/&#8206;02/&#8206;27 OS ビルド 26200.7171 エクスペリエンス Windows 機能エクスペリエンス パック 1000.26100.265.0 です。コピペなので自分の環境を間違いなくこれであってます。 念のためコントローラーのタイプを識別しようとしてるとこのコードを張っておきます。 ↓DInput.cpp #include"DxLib.h" #include"DInput.h" /// <summary> /// コンストラクタ /// </summary> /// <param name="controllerNumber">コントローラーが何番目につながってるかの数値</param> DInput::DInput(int controllerNumber) { SetJoypadDeadZone(controllerNumber, deadZone_); controller_ = controllerNumber; controllerType_ = GetJoypadType(controller_); switch (controllerType_) { case DX_PADTYPE_SWITCH_PRO_CTRL: break; default: proconInit(); //プロコンがプロコンと判定されないのでとりあえずこっちで初期化する break; } } ↓main.cpp #include"DxLib.h" #include"KeyInput.h" #include"DInput.h" #include<memory> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { std::shared_ptr<KeyInput> keyInput = std::make_shared<KeyInput>(); std::shared_ptr<DInput> Dinput = std::make_shared<DInput>(DX_INPUT_PAD1); // DXライブラリの初期化 if (DxLib_Init() < 0) return -1; // 描画先を裏画面にする SetDrawScreen(DX_SCREEN_BACK); // メインループ(何かキーが押されたらループを抜ける) while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { // 画面のクリア ClearDrawScreen(); /*keyInput->update(); DrawFormatString(0, 0, GetColor(255, 255, 255), "押した瞬間:%d", keyInput->getKeyPressedMoment(KEY_INPUT_RETURN)); DrawFormatString(0, 100, GetColor(255, 255, 255), "離した瞬間:%d", keyInput->getKeyReleasedMoment(KEY_INPUT_RETURN)); DrawFormatString(0, 200, GetColor(255, 255, 255), "長押しした:%d", keyInput->getKeyHoldNow(KEY_INPUT_RETURN, 5000.0f));*/ Dinput->update(); DrawFormatString(0, 0, GetColor(255, 255, 255), "押した瞬間:%d", Dinput->getButtonPressedMoment(PROCON_BUTTON::A_BUTTON)); DrawFormatString(0, 50, GetColor(255, 255, 255), "離した瞬間:%d", Dinput->getButtonReleasedMoment(PROCON_BUTTON::A_BUTTON)); DrawFormatString(0, 100, GetColor(255, 255, 255), "長押しした:%d", Dinput->getButtonHoldNow(PROCON_BUTTON::A_BUTTON, 1000.0f)); DrawFormatString(0, 150, GetColor(255, 255, 255), "レフトスティックX:%d", Dinput->getProconStickXY(PROCON_STICK::LEFT_STICK_X)); DrawFormatString(0, 200, GetColor(255, 255, 255), "レフトスティックY:%d", Dinput->getProconStickXY(PROCON_STICK::LEFT_STICK_Y)); DrawFormatString(0, 250, GetColor(255, 255, 255), "レフトスティック角度:%f", Dinput->getProconStickAngle(PROCON_STICK::LEFT_STICK_ANGLE)); // 裏画面の内容を表画面に反映 ScreenFlip(); } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }
メンテ
Re: プロコンを無線接続するとGetJoypadType()で0が帰ってくる?(情報提供求む) ( No.3 )
名前:管理人 日時:2025/12/16 22:40

状況のご説明ありがとうございます GetJoypadType は DxLib_Init() の実行前では正常に動作しない可能性がありますので、 std::shared_ptr<DInput> Dinput = std::make_shared<DInput>(DX_INPUT_PAD1); ↑ こちらの行は DxLib_Init() の呼び出し後に実行するようにしてみてください m(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存