玩家死亡后,我如何让死亡菜单等待3秒才能激活



大家好,谢谢你们的帮助,所以我制作了这个游戏,我有两个玩家,我可以通过触摸屏幕的右半部分来切换。今天我想在我的玩家死亡时添加一个爆炸,但我的死亡菜单会在玩家死亡后立即生成,所以粒子会被它隐藏起来。我试过使用Waitforseconds,但它不起作用(你能解释一下为什么吗?我是个新手(。以下是我认为您需要查看的代码部分:

这在我的OnTriggerCollision 中

if(collision.gameObject.tag == "spikes")
{
Break();
theGameManager.RestartGame();
moveSpeed = moveSpeedStore;
speedMilestoneCount = speedMilestoneCountStore;
speedIncreaseMilestone = speedIncreaseMilestoneStore;
}
}
private void Break()
{
if(rosso.gameObject.activeInHierarchy)
{
rb.gameObject.SetActive(false);
ParticleSystem exRossa = Instantiate(esplosioneRosso, new Vector3(transform.position.x, transform.position.y, -1), Quaternion.identity);
exRossa.Play();
}
if(verde.gameObject.activeInHierarchy)
{
rb.gameObject.SetActive(false);
ParticleSystem exVerde = Instantiate(esplosioneVerde, new Vector3(transform.position.x, transform.position.y, -1), Quaternion.identity);
exVerde.Play();
}
}

重新启动游戏,只需将死亡菜单设置为活动状态,并将一些东西设置为原始值,rosso和verde是玩家,esplosione rosso和esplosion verde是两种类型的粒子。Ty求助

您可以制作一个协同程序Died((或Death((,在激活死亡屏幕之前等待一段时间

IEnumerator Death(float seconds)
{
return yield new WaitForSeconds(seconds);
//Call DeathScreen.SetActive(true) after calling this function
}

或者你可以在更新功能中使用bool:

void Update()
{
time = 3f;
//set boolean dead to true in the event of the player dying
death = true;
if(death)
time -= 1f * Time.deltaTime;

if(death && time <= 0f)
DeathScreen.SetActive(true);
else
DeathScreen.SetActive(false);
...

最新更新