基本的には、ユーザーがパワーアップボタンを押すたびにいつでもデーモンに変身できるプレイヤーを作りたいと思っていますが、変換が終わると60秒後に変換が終了します(変換が終了すると、元の状態)。私はまた、プレイヤーが敵に当たった場合、変換が終了するようにします。これまで私はこのコードを作っていますが、動作しますが、プレーヤーが敵に当たった場合と、プレーヤーがボタンを押してプレーヤーを元に戻すことに決めた場合、60秒間の歩留まりをリセットするのに問題があります悪魔になる。誰もこの問題で私を助けることができますか?プレーヤーが敵に当たったときの歩留まりを秒単位で60秒に戻す方法を教えてください。
私の階層では、私は親としてプレイヤーを、子として私の悪魔プレイヤーを持っています。 playermovementスクリプトは以下の選手としてだけでなく、変換スクリプトに添付:
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();
}
そして、私の悪魔のプレーヤーで、私はこのスクリプトを添付しました。 私は動作しますが、ユーザーがボタンをクリックしてデーモンに変換すると、収穫待ち時間は止まらないので、プレイヤーがデーモンに数秒後に変換すると、デーモンプレイヤーは数秒間の歩留まりをリセットするのではなく、 。
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;
}
}
に役立ちますあなたがしていると言います問題はありますが、あなたのコードが今何をしているのか、そして実際にそれが期待しているか、やりたいことをもっと明確に(教えて)くれますか?また、私はあなたの質問に研究努力の多くを見ていない、あなたはすでにあなたが試したことを教えてくれますか?オンラインでソリューションを検索しましたか?そうであれば、あなたが見つけたもの、それがあなたにとって有用であったかどうか、そしてその理由を教えてください。また、[ask]と[mcve]をもう一度見てみてください。 – PJvG
'var demonRoutine = StartCoroutine(DemonCharacter()); if(takeDamage){StopCoroutine(demonRoutine); } 'それはあなたのために働くことができるようなもの。 – Maakep