大家好,谢谢你们的帮助,所以我制作了这个游戏,我有两个玩家,我可以通过触摸屏幕的右半部分来切换。今天我想在我的玩家死亡时添加一个爆炸,但我的死亡菜单会在玩家死亡后立即生成,所以粒子会被它隐藏起来。我试过使用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);
...