20.弾切れ、リロード中、武器チェンジ中をわかりやすくする
大きく分けて下記の三つをまとめて実装します
* 弾切れ中に左クリックしたらカチカチ鳴って弾切れしているとわかる
* リロード中、HUDにその情報を表示する
* 武器チェンジ中、HUDにその情報を表示する
弾切れ中にカチカチ鳴らす
サウンドファイルは適当なものを用意してきます。実装は下記の通り
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
void Update() { //hogehoge //射撃メソッドの実行判定 if (Input.GetButton("Fire1") && timer >= TimeBetweenBullets && Time.timeScale != 0 && IsReloading == false && IsChangingWeapon == false) { //GetButtonDownにしないと押しっぱなしでなりつづけちゃう if (CurrentAmmo<= 0 && Input.GetButtonDown("Fire1")) { //弾切れの時の音を鳴らす gunAudio.clip = emptyClip; gunAudio.Play(); } //残弾数のチェック if (CurrentAmmo <= 0) { return; } else { //装備してる武器によってSwitchして、Shootメソッドに渡す引数を変える //hogehoge } } //hogehoge } |
うーんイケてない。「おしっぱで射撃できていい」という仕様と「おしっぱでカチカチならすと音がうるさい」という問題とがバッティングしてしまっているため、わざわざInput.GetButtonDownで判定を取り直しています。きれいにできそうな気もするんですけどまあええかまずは完成させたろの精神でスルー!
リロード中のHUDを表示
これも適当な画像を作ります。この画像を、リロード中の待ち時間の間表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
IEnumerator DelayReload() { //reload中 imgReloading.enabled = true; yield return new WaitForSeconds(CurrentReloadTime); //reload完了 imgReloading.enabled = false; reloadable.Reload(CurrentMaxAmmo); } |
これはシンプルですね。リロードが始まったら表示してWaitForSecondsが終わったら消す。ちなみにこの画像はCanvas内に設置しています。次の武器チェン表示も要領は同じ。
武器チェンジ中のHUDを表示
1 2 3 4 5 6 7 8 9 10 11 12 13 |
IEnumerator DelayChangeWeapon(WeaponType changeWeapon) { //武器チェンジ中 imgChanging.enabled = true; yield return new WaitForSeconds(changeWeaponTime); //武器チェン完了 imgChanging.enabled = false; plChangeWeapon.ChangeWeapon(changeWeapon); } |
おんなじですね。今回はこれで終わり!
次回はコチラ
公式チュートリアルSurvival Shooter WITH PK Chapter.21「敵の強さ、登場数、キャラクターの成長をデザインする」
前回はコチラ
「Unity公式チュートリアルSurvival Shooter WITH PK Chapter.20「弾切れ、リロード中、武器チェンジ中をわかりやすくする」」への2件のフィードバック