• 01-01-2021, 00:12:21
    #1
    Merhabalar, 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:49
    #2
    Sorunu 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, 05:52:51
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Ufak bir video çekebilirseniz daha net anlaşılır. Açıkçası pek bişey belirmedi aklımda. Ayrıca hareket method'unuzu da paylaşırsanız daha sağlıklı olur
  • 01-01-2021, 11:33:42
    #4
    Cinemachine kullanın FixedUpdate te
  • 01-01-2021, 11:36:45
    #5
    delamis adlı üyeden alıntı: mesajı görüntüle
    Ufak bir video çekebilirseniz daha net anlaşılır. Açıkçası pek bişey belirmedi aklımda. Ayrıca hareket method'unuzu da paylaşırsanız daha sağlıklı olur
        // 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.