ฉันกำลังสร้างเกม 2D Platformer ซึ่งหากผู้เล่นตกลงจากฐาน / พื้นดินฉันต้องการให้ผู้เล่นเกิดที่จุดตรวจที่ใกล้ที่สุด อย่างไรก็ตามฉันต้องการให้มีความล่าช้าระหว่างผู้เล่นล้มลงจากพื้นและเกิดใหม่ นี่คือส่วนของรหัสของฉันเพื่อให้บรรลุเป้าหมายนี้:
private void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log(collision.tag);
if (collision.tag.Equals("Kill"))
{
StartCoroutine("Respawn");
}
else if(collision.tag.Equals("Checkpoint"))
{
Animator flag = collision.GetComponent<Animator>();
if (!flag.GetBool("hasCrossed"))
{
flagCounter++;
flag.SetBool("hasCrossed", true);
checkpoint = collision.gameObject.transform.position;
}
}
}
IEnumerator Respawn()
{
yield return new WaitForSeconds(respawnDelay);
transform.position = checkpoint;
}
วิธีนี้ใช้งานได้ดีสำหรับการเกิดใหม่ล่าช้าประมาณ 1 หรือ 2 วินาที แต่เมื่อเพิ่มการหน่วงเวลาเป็น 5 วินาทีผู้เล่นหลังจากที่ปรากฏที่จุดตรวจที่ใกล้ที่สุดหายตัวไปในทันทีและหลังจากนั้นไม่กี่ครั้งผู้เล่นก็ปรากฏขึ้นอีกครั้ง
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร