Input Systemを使って長押しで銃を連射
こんにちは!最近FPSゲームをなんとかして作ろうとしているのですが、Input systemで若干困ったことがあったのでメモします。それは長押しで連射するということです。FPSゲームでは基本、クリックなどを長押しすると連射してくれるのですが、Input systemで、ボタン入力のコールバックを受けとるコードは、context.started、context.performedなどです。これらは長押しには対応していないので、普通に、
public void OnFire(InputAction.CallbackContext context)
{
if (context.started)
{
銃を発射する処理
}
}
みたいなコードだと一回しか発射してくれません。なので、bool型の変数を用いて工夫します。簡単に書くと、
// 連射中かどうかのフラグ
bool isFiring = false;
// InputAction のコールバック
public void OnFire(InputAction.CallbackContext context)
{
if (context.started)
{
isFiring = true;
}
else if (context.canceled)
{
isFiring = false;
}
}
// 発射処理
void Fire()
{
if (isFiring)
{
// 銃を撃つ処理
}
}
このように、bool型の変数が、ボタン押したらtrue、話したらfalseになるようにし、銃を撃つ処理にtrueの時だけ撃つ処理を加えれば簡単にできます。他にも今日は色々実装したので、メモを残したいですが最近ねる時間が遅いので今日は寝ます!ばい!
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?