This project is an educational recreation of the famous Flappy Bird, developed in Unity. It focuses on clean code practices, object optimization, and dynamic difficulty scaling for game development classes.
- Physics-Based Movement: Custom gravity and velocity implementation for precise flight control.
- Directional Rotation: Uses
Mathf.Atan2to calculate the bird's angle based on its vertical velocity, providing a realistic "look-where-you-fly" effect. - Smooth Rotation: Utilizes
Quaternion.Lerpto transition between rotation angles smoothly.
- Memory Optimization: Implements a Pipe Pool to prevent frequent
InstantiateandDestroycalls, significantly reducing Garbage Collector (GC) pressure. - Dynamic Reuse: Inactive pipes are automatically reset and repositioned to the right edge of the screen when needed.
- Linear Difficulty Curve: Uses
Mathf.Lerpto gradually increasepipeSpeedand decreasespawnRatebased on the player's score. - Singleton Pattern: A centralized
GameManagercoordinates the game state, UI updates, and difficulty parameters. - Time-Scale Control: Handles game pause/play states using
Time.timeScale, ensuring consistent behavior across different frame rates.
Bu proje, ünlü Flappy Bird oyununun Unity ile geliştirilmiş eğitim amaçlı bir yeniden yapımıdır. Oyun geliştirme derslerinde anlatılmak üzere temiz kod prensipleri, nesne optimizasyonu ve dinamik zorluk ölçeklendirmesine odaklanır.
- Fizik Tabanlı Hareket: Hassas uçuş kontrolü için özel yerçekimi ve hız (velocity) uygulaması.
- Yönsel Rotasyon: Kuşun dikey hızına bağlı olarak açısını hesaplamak için
Mathf.Atan2kullanır ve gerçekçi bir "uçtuğu yöne bakma" efekti sağlar. - Akıcı Dönüş: Rotasyon açıları arasında yumuşak geçiş yapmak için
Quaternion.Lerpkullanır.
- Bellek Optimizasyonu: Sık
InstantiateveDestroyçağrılarından kaçınarak Garbage Collector (GC) yükünü azaltmak için Boru Havuzu yapısı uygulanmıştır. - Dinamik Yeniden Kullanım: Aktif olmayan borular otomatik olarak deaktive edilir ve ihtiyaç anında ekranın sağ kenarına yeniden konumlandırılır.
- Lineer Zorluk Eğrisi: Oyuncunun skoruna bağlı olarak
pipeSpeed(hız) değerini artırmak vespawnRate(doğma süresi) değerini azaltmak içinMathf.Lerpkullanır. - Singleton Yapısı: Merkezi bir
GameManager, oyun durumunu, UI güncellemelerini ve zorluk parametrelerini koordine eder. - Zaman Ölçeği Kontrolü: Oyunun duraklatma/başlatma durumlarını
Time.timeScaleile yöneterek farklı kare hızlarında (FPS) tutarlı bir davranış sağlar.