現在の実装では同時押しの判定がかなりシビアだと感じています。
フレームレートは60FPSなので、1/60秒のズレも無く同時押しをしないと、
同時押しの判定が出来ない作りになっているからだと思います。
例えば、
・Aキーを押下 → モーション1を行う
・Sキーを押下 → モーション2を行う
・A、Sキーを同時押下 → モーション3を行う
というアルゴリズムを擬似言語で表すと以下の様に書いております。
if( モーションしていない )
{
if( Aキーが押されている )
{
if( Sキーが押されている )
モーション3を行う
else
モーション1を行う
}
else if( Sキーが押されている )
{
モーション2を行う
}
}
同時押しの判定のシビアさが低い気がします。
なんとなくですが、同時押しに3~5フレームくらいのずれがあっても同時押しと判定している様な感じです。
つまり、上記の例で言いますと、
【1フレーム目】Aキーが押されたのでモーション1を行う
【3フレーム目】Sキーが押されたので、モーション1の途中だがモーション3に切り替える
という処理を行っている気がしているのです。
しかし、この様な処理を行っているのならば目的のモーションの前に一瞬違うモーションを行うことに違和感を感じます。
例えばシューティングゲームであれば、
モーション1:弾を発射する
モーション3:ボムを使う
だと、ボムを使いたい時に、「弾が一発発射される → ボムを使う」という意図しないことが起きるのではないかという懸念があるからです。
もし、同時押しのシビアさを軽減する為の設計として、
上記の様ではなく「わずかに同時押しがずれたとしても、同時押しのモーションのみを出せる」方法があるのでしょうか。
以上、よろしくお願いします。