基本上我有一个敌人和一个玩家。当敌人或玩家相互碰撞时,会造成伤害并导致玩家受伤导致HP损失。但是,一旦接触,它只会损坏一次。如何确保在整个碰撞过程中不间断地对玩家造成伤害?
我正在设置一个布尔变量 isTouching 并在接触时将其设置为 true。然后设置一个while循环,不断减少玩家的HP。然后使用 OnCollisionExit 将 isTouching 设置为 false。
private bool isTouching; // determines if the player is
touching
private void OnCollisionEnter2D(Collision2D collision)
{
isTouching = true;
if (collision.gameObject.tag == "Enemy01")
{
while (isTouching == true)
{
GetComponent<AudioSource>().Play();
HPBAR.PlayHP -= Random.Range(5, 30);
if (HPBAR.PlayHP < 0)// Insures player HP bar doesn't read less
than zero in GUI TXT
{
HPBAR.PlayHP = 0;
}
// Debug.Log("Ouch! " + HPBAR.PlayHP + " Left");
if (HPBAR.PlayHP <= 0 && HPBAR.lives > 0)
{
HPBAR.lives--;
HPBAR.LPfloat--;
p5.transform.position = spawner.transform.position;
HPBAR.PlayHP = Random.Range(100, 150);
// Debug.Log("You're Dead!!! Lives left: " + (HPBAR.lives + 1));
}
else if (HPBAR.PlayHP <= 0 && HPBAR.lives <= 0)
{
SceneManager.LoadScene("DeathScene");
}
}//end of while
} // of player tag check
}// end of collision enter
private void OnCollisionExit2D(Collision2D collision)
{
isTouching = false;
}
while 循环会冻结我的计算机,因此我不建议您在其中使用 while 循环运行它。无论如何,我需要知道的是如何实现我想要做的事情。如何让敌人不断伤害玩家?例如,如果我跳到敌人的顶部,它会造成一次伤害,然后我可以骑着他。我希望不间断地造成伤害,以迫使玩家最终离开或死亡。
翻阅古今
相关分类