[Tanks]「ボタンを押している間は有効だけど、一度無効になると、もう一度ボタンを押すまでは有効にしたくない」の実装方法 | Unity Forum | Tech Stadium Forum

[Tanks]「ボタンを押している間は...
 
通知
すべてクリア

[Tanks]「ボタンを押している間は有効だけど、一度無効になると、もう一度ボタンを押すまでは有効にしたくない」の実装方法  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
17/03/2021 4:35 pm  
TankShootingスクリプトのUpdate関数の中にビームが打てる仕様を実装しました。
 
この中で、
「ボタンを押し続けている間は最大3秒までビームを出し続けられるが、
それが一度終わると、そのままボタンを押しっぱなしにしていてもビームは発射されず
また、押し直すとビームが発射する」
という処理を書きました。
(この後、「アイテムを獲得するとビームが打てる仕様」にしたので、結局この努力は無駄になったのですが…)
 
もし、アイテム関係なく何度でもビームを打てる仕様にしたとしたら、
下記のように書く方法しか思いつかなかったのですが、
なんとなく長ったらしいような気がします。(ifが何度も使われているし、GetButtonDownとGetButtonをどっちも使っている)
if (Input.GetButtonDown(m_FireButton))
{
canBeam = true; timer = 0;
}
if (Input.GetButton(m_FireButton) && canBeam)
{
myBeamShot.shot();
timer += Time.deltaTime;
if (timer >= 3f)
{
myBeamShot.disableEffect(); canBeam = false;
haveBeamSphere = false;
}
}
if (Input.GetButtonUp(m_FireButton))
{
myBeamShot.disableEffect();
canBeam = false;
haveBeamSphere = false;
}
おそらく今回のように「ボタンを押している間は有効だけど、一度無効になると、もう一度ボタンを押すまでは有効にしたくない」
という処理は今後もよくやりたい処理だと思うので、もっと簡潔に書ける書き方があればご教授いただきたいです。

引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
17/03/2021 4:36 pm  

コルーチンを使う処理を行えば、少し簡潔に書けるようになると思います。
https://docs.unity3d.com/ja/2018.4/Manual/Coroutines.html


返信引用
共有:
タイトルとURLをコピーしました