Respawn programımla ilgili sorun nedir?


19

Oyuncu tabandan / yerden düşerse oyuncunun en yakın kontrol noktasında yeniden doğmasını istediğim bir 2D Platformer oyunu oluşturuyorum. Ancak yerden düşen oyuncu ile yeniden doğma arasında bir gecikme olmasını istiyorum. Bu, bu hedefe ulaşmak için kodumun bölümüdür:

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;

}

Bu, 1 veya 2 saniye gibi küçük yeniden doğma gecikmeleri için iyi çalışır. Ancak gecikmeyi 5 saniyeye çıkarırken, en yakın kontrol noktasında görününce oyuncu bir anda yok olur ve birkaç tekrardan sonra oyuncu yeniden ortaya çıkar.

Bu 2 saniyelik gecikme içindir Bu 2 saniyelik zaman gecikmesi içindir

Bu 5 saniyelik gecikme içindir Bu 5 saniye gecikme içindir

Bunu nasıl düzeltebilirim?


3
Animasyonlu ekran görüntülerini seviyorum!
Konerak

1
Ayrıca gif
user1306322

Yanıtlar:


49

Bunun, coroutine'ı nasıl ayarladığınızla bir ilgisi yok gibi görünüyor. Muhtemelen olan şey, oyuncunun zeminden ve serpinti çarpıştırıcıdan uzaklaşmak için düşerken yeterince yüksek bir ivme kazanmasıdır. Yeniden doğma sırasında pozisyonu hareket ettirdiğinizde, yine aynı oranda düşecektir. Sizin Yeniden doğma yöntemde, bazen sizin bekleme satırdan sonra sıfıra hız geri ayarlayın: GetComponent<Rigidbody2D>().velocity = Vector2.zero.


2
Oyun hataları müthiş xD
Tom

11
Daha genel olarak, konumun yanı sıra oyuncu karakterinizin durumunu da sıfırlamanız gerekir. Sağlık, MP, cephane vb. Gibi. Düşman düşmanlarını da bu tür bir oyunsa sıfırlamayı unutmayın.
cırcır ucube

@Joe ama frenemies ne olacak?
David Starkey

8
İlgili: Oyununuz fizik tabanlı değilse, birçok platformcu daha kontrollü düşüşlere izin vermek için "maksimum düşme hızına" sahiptir (ve bunun gibi hatalardan kaçının).
meydan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.