質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

3回答

2851閲覧

DXライブラリのゲームパッドの入力について

canan

総合スコア17

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2018/11/08 03:31

DXライブラリを使用してゲーム開発を行っているのですが、XBOXのコントローラーを繋いだ時とPS4のコントローラーを繋いだ時で反応するボタンの位置が違います。
そこで、PS4のコントローラーを繋いだ時と、XBOXのコントローラーを繋いだ時の処理を変えたいのですが、どのようにすればいいでしょうか。

例)下記のinput.Button[2]を、XBOXであればXボタンに対応、PS4であれば□ボタンに対応。といった具合です。

C++

1.... 2(例) 3/*プレイヤーの攻撃*/ 4 if (input.Buttons[2]) { //2ボタンを押した時の処理 5 shotTrigger = true; //弾を撃つ 6.....

説明不足であれば、追加致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ゲームパッドは様々な会社が出していますが、0ボタンがどの位置のボタンなのかという統一はされていません
なので究極的にはキーコンフィグをつける必要があります

2のボタンを押したら弾を撃つ、ではなく、ショットボタンを押したら弾を撃つとして、
ショットボタンは0番のボタン、というふうにして判定をすればいいです

雑な例だとこうですね

c++

1enum Button{ 2 Shoot, 3 Jump, 4} 5 6/* PS4は0でショット、1でジャンプ */ 7int ps4map[] = {0, 1}; 8 9/* XBOXは1でショット、0でジャンプ */ 10int xboxmap[] = {1, 0}; 11 12/* PS4のコントローラを使う */ 13int *buttonmap = ps4; 14 15if (input.Buttons[buttonmap[Shoot]]){ 16 ... 17}

投稿2018/11/08 04:12

izmktr

総合スコア2856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

canan

2018/11/08 07:07

なるほど・・・ps4mapとxboxmapの配列で、対応しているボタンの種類がどの機能かを、一から作る。であってますか?
izmktr

2018/11/08 07:51

それであっています
canan

2018/11/09 09:22

ありがとうございます!試してみます!
guest

0

直接input.Button[2]と入力を取得するのではなく、コントローラーの差異を吸収するクラスを作ってそれを参照すればいいんじゃ?

投稿2018/11/08 04:01

編集2018/11/08 04:59
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

canan

2018/11/08 06:57

例えば、どのような感じでしょうか?
退会済みユーザー

退会済みユーザー

2018/11/09 10:26

ごめんなさい、コメント返し忘れてました。ベスアンサーのような役割を肩代わりするクラスを想定していました。実装する時間がなかったので構想だけで申し訳ないのですが。また、洋ゲーなんかを参考に、どう制御しているか考えてみると有益かもしれません。
guest

0

まずはここよりもDXライブラリ置き場掲示板が適切な場かと思います。

投稿2018/11/08 03:47

can110

総合スコア38352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

canan

2018/11/08 06:56

ありがとうございます。そちらの方にも質問してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問