Unity 2d Oyun Geliştirmede Bir Sorun - Camera Konusunda
4
●69
- 01-01-2021, 00:12:21Merhabalar, unity ile 2d mobil oyun geliştiriyorum bir sorunum var. Unityde tecrübeli kişiler yardımcı olabilir mi. Sorunum karakterimi hareket ettirme komutlarım fixedupdate de oyunum platform oyunu zemini 2d tilemap unitynin eklentisiyle oluşturdum.. Karakter hareket ederken böyle zeminde ve level dizayn öğelerinde takılma gibi birşey oluyor pürüzsüz değil tam olarak yani bu neden kaynaklı olabilir ne önerirsiniz kamerayı değiştirerek uğraştım ancak olmadı. Procamera2d kullanıyorum normal kamera scripti de denedim
- 01-01-2021, 02:02:49Sorunu tam olarak anlamak zor fakat zemin objelerindeki collider sorunu olabilir. Collider oyuncunun altında bulunduğunda aşağı düşmesini engellerken sağında ve soluna denk geldiğinde hareket etmesini engeller, bir nevi duvar gibi davranır. Bazen zeminde bulunan colliderler oyuncunun tam altına değil, sağında ya da solunda etkileşime girer. Bu durumda oyuncu duvara denk gelmiş gibi durur. Bu sorunu önlemek için zemin nesnelerinin kenarlarına kaydırıcı ek collider yerleştirirlir. Oyuncu bu collidere çarptığında aşağı kayar ve donma olmaz.
Ustalar daha iyi çözümler önerebilir, benim anladığım bu şekilde. - 01-01-2021, 11:36:45delamis adlı üyeden alıntı: mesajı görüntüle
// Hareket Komutları - Başlangıç if (SimpleInput.GetAxisRaw("Horizontal") > 0) { if (!MovementStart) { PlayerMainSpeed = 1f; MovementStart = true; } if (PlayerMainSpeed < 5.75f) PlayerMainSpeed += Time.fixedDeltaTime*PlayerSpeed; Rb.velocity = Vector2.Lerp(Rb.velocity, new Vector2(SimpleInput.GetAxis("Horizontal") * PlayerMainSpeed,Rb.velocity.y), 10f * Time.fixedDeltaTime); } else if (SimpleInput.GetAxisRaw("Horizontal") < 0) { if (!MovementStart) { PlayerMainSpeed = -1f; MovementStart = true; } if (PlayerMainSpeed > -5.75f) PlayerMainSpeed -= Time.fixedDeltaTime*PlayerSpeed; Rb.velocity = Vector2.Lerp(Rb.velocity, new Vector2(SimpleInput.GetAxis("Horizontal") * -PlayerMainSpeed, Rb.velocity.y), 10f * Time.fixedDeltaTime); } else if (Mathf.Abs(SimpleInput.GetAxisRaw("Horizontal")) <= 0) { MovementStart = false; PlayerMainSpeed = Mathf.Lerp(PlayerMainSpeed, 0, Time.time); Rb.velocity = Vector2.Lerp(Rb.velocity, new Vector2(0,Rb.velocity.y), Time.fixedDeltaTime); } // Hareket Komutları - Bitişhareket komutlarımı ekledim hocam.