Tôi đang tạo một trò chơi 2D Platformer trong đó nếu người chơi rơi khỏi căn cứ / mặt đất thì tôi muốn người chơi hồi sinh ở trạm kiểm soát gần nhất. Tuy nhiên tôi muốn có một sự chậm trễ giữa người chơi rơi xuống đất và hồi sinh. Đây là phần mã của tôi để đạt được mục tiêu này:
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;
}
Điều này hoạt động tốt cho sự chậm trễ hồi sinh nhỏ như 1 hoặc 2 giây. Nhưng khi tăng độ trễ lên 5 giây, người chơi sau khi xuất hiện ở điểm kiểm tra gần nhất sẽ biến mất ngay lập tức và sau một vài lần lặp lại, người chơi xuất hiện lại.
Làm thế nào tôi có thể sửa lỗi này?