1 回答

TA贡献1780条经验 获得超5个赞
OnCollisionEnter2D旨在仅触发发生相同碰撞的第一帧。
您想使用OnCollisionStay2D(),它会在每一帧发生碰撞时触发。
此外,摆脱while循环。OnCollisionExit2D在方法终止之前,游戏无法更新(包括调用)。
private void OnCollisionStay2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy01")
{
GetComponent<AudioSource>().Play();
// To take 5 - 30 damage per second:
HPBAR.PlayHP -= Random.Range(5f,30f) * Time.deltaTime;
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");
}
} // of player tag check
}// end of collision stay
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy01")
{
// put "i quit touching the hurty thing" stuff here.
}
}
- 1 回答
- 0 关注
- 319 浏览
添加回答
举报