HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0215
ZAP左右のアナログスティックを読み取る方法5解決


ZAP

リンク

2022/2/15(Tue) 00:00:37|NO.95422

PCに接続したPSやXBOXのパッドを使って、
左右のアナログスティックを両方用いたSTG
(ジオメトリーウォーズのようないわゆるツインスティックシューター)
を作ってみたいんですが、
左右のアナログスティックをそれぞれ制御するには何を用いればよいのでしょうか?



この記事に返信する


GENKI

リンク

2022/2/15(Tue) 01:52:31|NO.95424

mod_joystick2.asをインクルードしてjoyGetPosEx
左スティック:data(2), data(3)
右スティック:data(4), data(5)



Makoto

リンク

2022/2/15(Tue) 19:22:19|NO.95430

XInputのコントローラーならば
GENKIさんのサイトで紹介されている
xinput-hspが使えます
https://mclab.uunyan.com/lab/hspneta/neta012.htm
https://github.com/mono0x/xinput-hsp

スティックだけでなくトリガーのアナログ入力もできます
振動機能にも対応していました



ZAP

リンク

2022/2/16(Wed) 00:02:54|NO.95432

お二方、ありがとうございます!
参考にさせていただきます!



Drip

リンク

2022/2/16(Wed) 17:39:02|NO.95442

Dripです。こんにちは。横から失礼します。

これは私の経験談なのですが、どうもjoyGetPosExから得られる情報は必ずしも全てのゲームパッドで一定ではないことがあるようです。
経験上特に…某E社製ゲームパッドで(あるいはコンバーターでも)多く発生しているようなのですが、GENKIさんの

>右スティック:data(4), data(5)

などとされる情報は機種によって反転してしまう環境があるようです。
つまり、水平情報と垂直情報が逆転し、スティックを横に倒すとdata(5)に値が反映され、上下移動と認識されてしまいます。
逆に縦に倒すとdata(4)に値が反映され、左右移動と認識されるようになります。
しかも、反転してしまう機種であってもWindowsのコントロールパネルからジョイスティックの動作テストを行った場合、水平入力と垂直入力は正しく認識されるようです。
このことから、joyGetPosExから返る値の意味のマッピングを行うような仕組みが別にあるのでは?とも思っているのですが、実際の所どうなんでしょうか。

例えば、スティックを持たないスーパーファミコンのようなデジタルゲームパッドが接続された場合、これらのdata(2〜5)の値は常に0に固定されます。
これをスティックが存在するものとして読み取った場合、スティックが常に左上に倒れた状態と認識されてしまうでしょう。
ソフトが起動したタイミングでdata(2〜5)の値が0ならばスティックが存在しない環境として処理すれば良いことかもしれませんが、別途、joyGetPosExから返る値にジョイスティックの情報が存在していないことを事前に知るようなマッピング情報があれば、正しい手順でスティックの有無を判別することができるように思えます。

joyGetPosExから得られる情報をマッピングする手立てがない場合、joyGetPosExを使用する時は、上記のようなスティックの有無を事前に判定することや、オプションとして水平・垂直入力を逆転するオプションを搭載したほうが安全に運用することができるかもしれません。



ZAP

リンク

2022/2/20(Sun) 12:36:18|NO.95488

>Dripさん

標準のAPIでも環境による差が出るんですか。
なんかWindowsのジョイスティック周りって不親切ですよね……

オプションメニューでアナログスティックの有無や、
X軸、Y軸の割り当てを設定させるようなキーコンフィグは必須ということですね。
有益な情報ありがとうございます!



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.95422への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2021(c) All rights reserved.