現在制作中のゲームでボスのスクリプトを書いているのですが、「Invoke("PlayerWin", 3.0f);」と書いても"PlayerWin"メソッドが呼び出されません。
試しに「Invoke("PlayerWin", 3.0f);」を「PlayerWin();」と書いてみたところ、うまく呼び出されたのですが、BGMなどの関係で、遅延させる必要があります。
どうすればメソッドを呼び出せるでしょうか。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BossControl : MonoBehaviour { public GameObject Explosion; public bool DebugMode = false; public static float maxLife = 1000; public static float life; float Z_Speed = 30; public static float PitRest; bool Shield; float damageTime; public static bool damageBool; void Start () { life = maxLife; PitRest = 6; Shield = true; } void Update () { transform.position += transform.forward * Time.deltaTime * Z_Speed; transform.Rotate(new Vector3(0, 0, 10) * Time.deltaTime); if (PitRest <= 0) { Shield = false; } if (life <= 0) { Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); Destroy(this.gameObject); BgmManager.Instance.Stop(); Invoke("PlayerWin", 3.0f); } if (damageBool == true) { damageTime += Time.deltaTime; if (damageTime >= 0.2f) { damageTime = 0; damageBool = false; DamageEffect(new Color(0.8f, 0.8f, 0.8f, 0.004f)); } } if (DebugMode == true) { Shield = false; } } void PlayerWin() { BgmManager.Instance.TimeToFade = 0.0f; BgmManager.Instance.Play("勝利1"); UIControl.score += 5000; } void OnTriggerEnter(Collider coll) { if (coll.gameObject.tag == "PlayerBullet") { if (Shield == false) { DamageEffect(new Color(1.0f, 0.0f, 0.0f, 1.0f)); life -= 10; damageBool = true; } } if (coll.gameObject.tag == "PlayerMissile") { if (Shield == false) { DamageEffect(new Color(1.0f, 0.0f, 0.0f, 1.0f)); life -= 20; damageBool = true; } } } public void DamageEffect(Color color) { Renderer[] renderers = gameObject.GetComponentsInChildren<Renderer>(); foreach (Renderer renderer in renderers) { renderer.material.color = color; } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/19 12:09
2017/09/19 13:44
2017/09/20 11:37
2017/09/20 11:40
2017/09/20 13:44