基本上我想讓一個玩家可以隨時變換成惡魔,只要用戶按下加電按鈕,但是我希望轉換在60秒後結束(當轉換結束時,我希望玩家恢復到原始狀態)。如果玩家被敵人擊中,我也希望變形結束。到目前爲止,我已經編寫了這段代碼,但它的工作原理很簡單,但是如果玩家被敵人擊中並且用戶決定按下按鈕將玩家轉換回來,我很難將秒數等待時間重置爲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();
}
而在我的惡魔玩家中,我附加了這個腳本; 我的工作原理是,但當用戶點擊按鈕轉換成惡魔時,屈服等待秒數不會停止,所以當玩家轉換成惡魔秒後,惡魔玩家轉換回玩家,而不是重置等待秒數。
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;
}
}
你說你有困難,但是你能否更清楚地告訴我們你的代碼現在做了什麼,以及你期望它或者希望它做什麼?我也沒有在你的問題中看到很多研究成果,你能告訴我們你已經嘗試過了嗎?您是否在網上搜索解決方案?如果是這樣,你能告訴我們你發現了什麼,它是否對你有用,爲什麼?也許還可以再看看[問]和[mcve]。 – PJvG
'var demonRoutine = StartCoroutine(DemonCharacter()); if(takeDamage){StopCoroutine(demonRoutine); }'這樣的東西可以爲你工作。 – Maakep