●やりたいこと
3しDシューティングゲームを作っています。
プレイヤーが死んだ後、叫び声を入れてからシーンを変更したいです。
●シーン変更のコード
if (hp <= 0)
{
SceneManager.LoadScene("dead");
}
こちらのコードでHPが0になった時にシーンを変更できる仕様です。
お願いします。
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.AI; 6using UnityEngine.SceneManagement; 7 8 9public class PlayerManager : MonoBehaviour 10{ 11 12 //音楽について 13 //public AudioClip stepsound; 14 AudioSource audioSource; 15 Rigidbody rb; 16 public AudioClip playerdamage; 17 18 //PlayerUIManagerと連携 19 public PlayerUIManager playerUIManager; 20 //HPの設定 21 int maxHp = 100; 22 int hp; 23 //ダメージエフェクトの追加 24 public GameObject bloodImage; 25 26 27 void Start() 28 { 29 rb = GetComponent<Rigidbody>(); 30 audioSource = GetComponent<AudioSource>(); 31 //HPに関する記述 32 hp = maxHp; 33 34 } 35 36 void FixedUpdate() 37 { 38 //以下のキーが押された時にオウディオソースの曲を流す 39 //参考文献:https://qiita.com/OKsaiyowa/items/d1a131f6b3e356c19388 40 if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.RightArrow)|| Input.GetKeyDown(KeyCode.LeftArrow)) 41 { 42 audioSource.Play(); 43 } 44 //以下のキーが離されたらオウディオソースを止める 45 else if (Input.GetKeyUp(KeyCode.UpArrow) || Input.GetKeyUp(KeyCode.DownArrow) || Input.GetKeyUp(KeyCode.RightArrow)|| Input.GetKeyUp(KeyCode.LeftArrow)) 46 { 47 audioSource.Stop(); 48 } 49 //HPが0になったときにdeadシーンに移動 50 if (hp <= 0) 51 { 52 SceneManager.LoadScene("dead"); 53 } 54 55 } 56 57 //private void OnTriggerEnter(Collider ohter) 58 //{ 59 // Debug.Log("ぶつかったよPlayerManager"); 60 //} 61 62 void Damage(int damage) 63 { 64 hp -= damage; 65 if (hp <= 0) 66 { 67 hp = 0; 68 } 69 playerUIManager.UpdateHP(hp); 70 Debug.Log("Player残りHP:" + hp); 71; 72 } 73 private void OnTriggerEnter(Collider other) 74 { 75 Damager damager = other.GetComponent<Damager>(); 76 if (damager != null) 77 { 78 // ダメージを与えるものにぶつかったら 79 //animator.SetTrigger("Hurt"); 80 Damage(damager.damage); 81 audioSource.PlayOneShot(playerdamage); 82 Debug.Log("Damager効"); 83 bloodImage.SetActive(true);//PlayerhitスクリプトにbloodImageを渡す 84 //Destroy(bloodImage); 85 86 87 88 89 90 } 91 } 92 93 94 95} 96 97
まずは自分で「unity 秒後」などで調べて試してください
ご指摘ありがとうございます!
SceneManager.LoadScene("dead");
こちらを
SceneManager.LoadScene("dead", 2f);
とやってみましたがエラーが出てしまいましたので、、、。
LoadSceneだけでは時間指定はできませんよ。
https://docs.unity3d.com/ja/2018.4/ScriptReference/SceneManagement.SceneManager.LoadScene.html
ありがとうございます!
試してみます!
すみません
こちら解決できそうにないので別の方法でやることにしました