Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ゲーム入力モード時にWASDの複数キーを同時に離すと歩行モーションが流れ続ける #1000

Open
malaybaku opened this issue Nov 7, 2023 · 10 comments
Labels
bug_release Something isn't working in released ver

Comments

@malaybaku
Copy link
Owner

ユーザー報告です。

  • v3.3.1で発生し、v3.2.1では起こらない旨が報告されている
  • v3.3.1とv3.3.0で挙動が切り替わる場合、Unityのバージョンアップに伴って以下どれかの振る舞いが変わった可能性がある
    • AnimatorControllerの遷移
    • キー入力全般
    • 入力処理の時間方向の解像度 -> 「根本的には元から起こってたけど起きやすくなった」みたいな説
@malaybaku malaybaku added the bug_release Something isn't working in released ver label Nov 7, 2023
@malaybaku
Copy link
Owner Author

v3.5.0 + 手元環境で簡単に試した範囲で再現しておらず、調べ方から考え直す必要あるかも

@malaybaku
Copy link
Owner Author

#1031

キーボードに関してdown/upする間にactive windowの変更を含めた操作を行うとうまく反映されない

が真因っぽいので、active windowが変化したときkey up扱いにできないか調べる (とくにVMMのactivenessが切り替わってるケース)

@malaybaku
Copy link
Owner Author

発生条件は「キー押下中にVMMが非foreground → foregroundに切り替わる」っぽい
(逆だと再現しない)

@malaybaku
Copy link
Owner Author

malaybaku commented Jun 30, 2024

#1040 はworkaroundで、

  • 「RawInputのイベント自体が飛んでこないことがあるっぽい」というのが観察事象
  • それを踏まえて、key downイベントが一定時間途切れたらkey upした扱いにするようにした

workaroundを行ったうえでの根本対策の指針はこんな感じ:

  • Unity上でRawInput API使うのは信頼性が厳しい…という考え方にシフトしたい
  • そのため、WPF or 別の単体プロセスでRawInputを監視してWM_INPUTの取得抜けを防いでIPCするようにしたい
  • キーイベントに対してIPCするのはコストが高いが、諸々のバランス踏まえると仕方ないつもり

@utagestudio
Copy link

[ v3.8.1 ]
対応ありがとうございます!
確認したところ、移動ロックが生じた際に一定時間後に待機モーションに切り替わるのを確認できました!!
しばらくこれを配信で使わせていただきたいと思います!

@malaybaku
Copy link
Owner Author

#1043 の追加対応でだいぶ発生頻度が減っているはず…ということでcloseします

@utagestudio
Copy link

@malaybaku
Closeされたあとで申し訳ございません。

今、3.8.2を使用しており、実際に #1043 により問題は生じていないのですが、
逆に #1040 でご対応いただいた「 key downイベントが一定時間途切れたらkey upした扱いにするようにした 」により、
「押しているのに、棒立ちになる」 という問題が起きております。
こちら、ご対応可能でしょうか…

@malaybaku malaybaku reopened this Aug 25, 2024
@malaybaku
Copy link
Owner Author

@utagestudio

issueをreopenしました。

押しているのに、棒立ちになる

について再現頻度と再現方法を確認したいです。内容によっては対応を見送る可能性があります、ご了承下さい。

再現頻度

v3.8.2で、特定の手順さえ踏めば再現しますか?また、再現頻度はどの程度ですか?(100%, 10回に2回程度、など)

再現方法

手元環境ではv3.8.2 Full Editionで以下の手順を行って棒立ちになる挙動が再現できていないため、詳細な再現手順をご共有下さい。
特定のアプリケーション(ゲーム)を起動中のみ発生する、キーの連打操作で発生する、下記と同じ手順で発生している…などのケースがありうるつもりで、アプリケーションの種類によって発生の有無が異なる場合、具体的なアプリケーション名も記載して下さい。

手元で再現を試みたものの再現しなかった(棒立ちにならず移動しつづけた)手順:

  • VMagicMirrorのゲーム入力モードを有効にし、矢印キーとWASDキーで移動するようにする
  • 全画面表示されるゲームを起動する
  • その状態でWASDや矢印キーを5秒程度押し続ける

@utagestudio
Copy link

頻度としては、ほぼ確実に、という感じになります。
先日の配信でも、短時間で数回確認ができました。
https://www.youtube.com/live/O6_1gI2eZoc?t=706
https://www.youtube.com/live/O6_1gI2eZoc?t=786
https://www.youtube.com/live/O6_1gI2eZoc?t=802
https://www.youtube.com/live/O6_1gI2eZoc?t=850

ちょっと試したところ、まずWキーで前進し、そのままShiftキーを押すと、少しして立ち往生するようです。
Wキーの代わりにASDでも同じでした。
また、Shiftキーの代わりに、別のWASDキーでも同じでした。
ただし、Shiftキーを押してから、WASDのどれかを押した際には、モーションが解除される事はありませんでした。
おそらく、順番に2キー入力されたときに、先に入力されたWASDが一定時間で無効化されるようです。
こちらでご確認いただけますでしょうか。

@malaybaku
Copy link
Owner Author

詳細ありがとうございます、

Wキーで前進し、そのままShiftキーを押す

の方法で手元でも確認できました。
テキストエディタで見たところ、記載の手順で入力すると直近のキー以外の連打入力がなかったことになることをあわせて確認しています。

大筋では #1040 の処理を廃止すれば改善しそうですが、ごくまれにキーが押しっぱなし扱いになる問題が既知であるため、対応方法は少し検討します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug_release Something isn't working in released ver
Projects
None yet
Development

No branches or pull requests

2 participants