XBOXコントローラが認識されない / リストの受け渡しにつきまして

ホーム フォーラム CF2.5使用法全般 XBOXコントローラが認識されない / リストの受け渡しにつきまして

  • このトピックには4件の返信、2人の参加者があり、最後にMidorikoにより4年、 7ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #33281
    Midoriko
    参加者

    お世話になっています、度々すみません。
    大きく2点質問です。

    1.他のアプリケーション上でXBOXコントローラが認識されていても、
    ClickteamFusionでは認識されないことが度々あり不安を感じています。
    コントローラを一度抜いて挿し直した後などは顕著です。
    CFやCF製アプリを再起動しても認識されません。

    コントロール制御は以前はエクステンションの[Joystick 2 object]を、
    現在は変更して[XBOX ゲームパッド]オブジェクトで行っていますが、
    どちらでも発生します。
    標準のコントロール(ボタンや方向キーを押している間繰り返す)なら
    とても安定しますが、4ボタンまでしか設定できないので不十分です。

    質問としましては、
    ●XBOXコントローラがCF(製アプリ)で
     認識されない原因と解決法があれば教えてください。
    ユーザーにも案内できる方法でお願いします。
    ●[XBOX ゲームパッド]オブジェクトのボタンを押す条件で
     プレイヤー番号を数式で設定しますが、
    『プレイヤー数(1人=p1 2人=P2… またはこれらの組み合わせ)』
    という注釈の意味がよくわかりません。
    例えば「どのプレイヤーの操作でも実行」を数式上で設定する場合
    どのように書けばよろしいでしょうか?
    ●[XBOX ゲームパッド]オブジェクトを使う上で
     何かデメリットがあれば教えてください。

    2.例えばRPGの所持アイテムなどの管理にはリストオブジェクトを
    使うと思いますが、多くのフレームで共有する必要があります。
    つきまして、
    ●フレームをまたいでリストオブジェクトのデータを
     保持する(同一オブジェクトに直接受け渡す)方法が
     もしあれば教えてください。
    ●それが不可能な場合、
     グローバル文字列かiniに出力して受け渡すことを考えています。
     リストを行ごとに出力するとかなりの工数になりますし
     行数も不確定ですので、リストを丸ごと出力・読み込む方法や、
     そうでなくてもグローバル文字列1つで1つのリストのすべての行を
     受け取る方法があれば教えてください。
    ●それも不可能な場合ですが、
     変数タイマーを使って[変数]行をiniに出力→読み込みも同様
     という方法で考えています。
     もし問題があればご指摘ください。

    以上となります、よろしくお願いします。

    #33293
    ASD
    キーマスター

    1番目の質問について

    『標準のコントロール』及び『XBOXゲームパッドオブジェクト』の場合は基本的には実行中にパッドが抜かれても、再接続すれば操作可能になります。
    『Joystick 2 object』の場合は再接続した後、『Poll For New Devices』アクションが実行されると認識されるようになります。但し、『パッドが接続されたかどうか』を判定することはできないため、再接続してすぐ操作可能にするためには、常に『Poll For New Devices』を実行し続ける(監視する)必要があり、処理に負担となるため、基本的には一度パッドが抜かれた場合はアプリを再起動させるようにする方が無難でしょう。

    再接続しても認識されない場合、Windows自体でパッドが認識されているか確認してください。『コントロールパネル』→『デバイスとプリンター』にてゲームコントローラーの設定を開いてください。リストに表示されていても、『詳細設定』の優先デバイスが『なし』になっていると使用できませんのでそこも確認してください。

    『XBOXゲームパッドオブジェクト』のプレイヤー番号を指定する数式は、番号を組み合わせた数字を指定することで、複数のプレイヤーで同じ操作が可能になります。

    1Pは1 2Pは2 3Pは4 4Pは8 を指定しますが、ここで3を指定すると、1Pと2Pで、5とすると1Pと3Pで、15とすると1P‐4Pすべてで、同じボタンが反応するようになります。この辺りはヘルプにも記載されていますので一度ご確認ください。

    『XBOXゲームパッドオブジェクト』を使う際のデメリットですが、このオブジェクトは『XInput』に対応したゲームパッドにしか反応しません。旧来の『Direct Input』で動作するゲームパッドは使用できません。逆にXInputのパッドはDirect Inputと互換性があるので、Direct Inputのパッドを認識するJoystick 2 objectでも操作が可能です。
    基本的にはJoystick 2 objectで操作を構築し、XInputにしか存在しないボタン(LT、RTなど)を使用する場合のみXBOXゲームパッドオブジェクトを使用するといった使い方が良いと思います。

    #33294
    ASD
    キーマスター

    2番目の質問について

    リストオブジェクトはグローバル化できませんので、別のフレームへ反映させる場合は、一度リストの内容を出力する必要があります。
    リストオブジェクトの『リストファイルを保存』アクションで外部へ内容を出力することができます。次のフレーム開始時にそのファイルを読み込めば良いです。
    フレームが遷移する度に外部にファイルを生成したくない場合は、リストの内容をグローバル文字列へ格納することで作成せずに済ませることもできます。

    – サンプルプログラム
    https://blog.clickteam.jp/wp-content/uploads/2019/09/cf25_blog_2019-09-22_リストの内容を次のフレームへ反映.zip

    #33295
    ASD
    キーマスター

    複数の質問がある場合、関連しない内容であればトピックを分けて別々に投稿して頂きますようお願い申し上げます。

    #33296
    Midoriko
    参加者

    お返事ありがとうございます。
    たいへんお手間を頂きまして申し訳ありません、助かりました。
    次回からトピックを内容ごとに分けさせて頂きますね。

    ●XBOXコントローラにつきまして
    たいへん分かりやすく、参考になりました。
    ヘルプ内の検索にヒットしなかったためページが無いものと思っていました。

    関連しまして、XBOXオブジェクトの
    [ゲームパッドが接続中]の条件があまりにも反応しないため試行したところ、
    プレイヤー番号として”0″を指定することで正常に反応しました。

    こちらは注釈やヘルプで 1 – 4 を設定するよう指示されていますが、
    実際は 0 – 3 に設定する必要があるものと思います。
    一応ご報告させて頂きます。ご確認頂ければ幸いです。

    ●リストオブジェクトの内容のフレーム間受け渡しにつきまして、
    サンプルを拝見しました。
    仰る通り暗号化されていない状態で外部ファイルに書き出したくはないので
    グローバル文字列に受け渡す形で作って頂き非常に助かります。

    String tokenizerを利用しelement単位でループを回す、
    というのは思いつきませんでした。
    イベントの行数も少なく非常に美しいですね。
    ぜひこのまま活用させて頂きます。

    改めてたいへん助かりました。ありがとうございました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。