0

基本的には、ユーザーがパワーアップボタンを押すたびに自由に悪魔に変身できるプレーヤーを作りたいのですが、60秒後に変身を終了させたいです(変身が終了したら、プレーヤーを元の状態に戻したい)。また、プレイヤーが敵に襲われたら変身を終了させたいです。これまでのところ、このコードを作成して動作しますが、プレイヤーが敵に襲われた場合、およびユーザーがボタンを押してプレイヤーを元に戻すことを決定した場合、イールド待機を 60 秒にリセットするのに問題があります。悪魔に。誰でもこの問題を解決できますか?

私のヒエラルキーでは、プレイヤーを親、デーモン プレイヤーを子としています。プレーヤーにアタッチされたプレーヤー移動スクリプトと、以下の変換スクリプト:

  public GameObject demon;
  public BoxCollider2D col;
  public Renderer rend;
  public ParticleSystem par1;
  public static Vector3 target;


    void Start () {
        target = transform.position;
    }

    void Update () {
         target.z = transform.position.z;
    }

    public void DemonCharacter() {
    StartCoroutine (PowerUpCoroutine ());
}

     private IEnumerator PowerUpCoroutine() {

      yield return new WaitForSeconds (0.3f);

      par1.Play (); // particle system animation to cover transformation happening
  par1.transform.position = target;

      yield return new WaitForSeconds (0.2f);

      demon.SetActive (true); // activates demon gameobject

      rend.enabled = false; // deactivate players spriterenderer 

      col.enabled = false;

      yield return new WaitForSeconds (60f);

      demon.SetActive (false); // deactivates demon gameobject

      rend.enabled = true; // activate players spriterenderer

      col.enabled = true;

      par1.Stop ();
   }

そして、デーモン プレーヤーにこのスクリプトを添付しました。私は動作しますが、ユーザーがボタンをクリックして悪魔に変身するとき、yield waitforseconds は止まりません。

    public BoxCollider2D Playercol;
    public Renderer PlayerRend;

void Start()
{

}

void Update ()
{

}

void OnTriggerEnter2D(Collider2D col) {
    if (col.tag == "enemy") {
        demon.SetActive (false);
        PlayerRend.enabled = true;
        Playercol.enabled = true;
    }
}
4

2 に答える 2