見出し画像

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の時だけ撃つ処理を加えれば簡単にできます。他にも今日は色々実装したので、メモを残したいですが最近ねる時間が遅いので今日は寝ます!ばい!



この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?