[UNITY]2DRPG開発日誌 #76 『InControl』でButtonDownを検出するのは「WasPressed」でいいのか?

InControl

InControlは大変優秀な入力支援アセットですが、InputManagerでいう「GetButtonDown」(押された)を検出する機能が見当たりません。

「IsPressed」または「WasPressed」で検出するようですが、「IsPressed」(押されている)は毎フレーム検知する「押しっぱなし」なのでダメそうです。

では「WasPressed」はどうでしょう?「Was」だから、前フレームの情報を参照しているのでしょうか?

というわけで、「Time.frameCount」で参照されているフレーム数を調べてみました。

if (activeDevice.LeftTrigger.HasChanged && activeDevice.LeftTrigger.IsPressed)
{
    Debug.Log(".HasChanged && .IsPressed: Time.frameCount = " + Time.frameCount);
}
if (activeDevice.LeftTrigger.WasPressed)
{
    Debug.Log("WasPressed: Time.frameCount = " + Time.frameCount);
}

※IsPressedとHasChangedを噛ませて、無理やりGetButtonDownと同じ挙動にしてみます。すると…

フレーム数が同じですね。

結論

つまり、「WasPressed」は前フレームの情報を参照するものではなく、普通に「このフレーム内で押された」を検出するので、「WasPressed」=GetButtonDownという認識で良いみたいです。

…なぜ「Was」なの??

タイトルとURLをコピーしました