• 24-05-2020, 21:12:33
    #1
    Hayırlı bayramlar,
    Gamemanager içinde bir array listem var. Her elementin içinde Gameobject, sıra numarası ve konum olmak üzere 3 değişken var. Oyun dinamiği tamamen bunun üzerine kurulu.

    Bu araylist obje havuzu görevi görüyor. Sürekli en alttaki obje en üstte bulunan objenin üstünde bir yerde rastgele konumlanıyor. Ve sıra numarası buna göre değişiyor.

    Örneklemek gerekirse, 1 2 3 objem var. 1. Objeye dokununca sırası numarası değişkeni 4 oluyor ve 3. Objenin üst konumunda rastgele bir konum alıyor bu şekilde gidiyor.

    Fakat objelere verdiğim sıra numarası değişkeninden bir türlü ulaşamıyorum. Yani mesela 1. Obje ile 2. Obje arasında bir çizgi çizmem lazım diyelim. Bu objelere sıra numarası üzerinden ulaşamıyorum. Cok çok dolaylı yollarla aklıma bir şeyler geldi de yine de sorunlar çıktı.

    Bunu haleltmenin bir yolu var mı? Günlerdir kafayı yemek üzereyim.

    arraylist yerine başka ne kullanabilirim bunu yapmak için?

    Şuan mesela element numarasına göre sorgulama yapıyoruz ama sürekli değişen benim verdiğim sıra numarasina göre objelere erişme imkanım var mı?

    Arraylist içinde for dönüsüyle obje sıra numaralarını çekip bir int dizisine atadım. Ama yine de objelere erisemiyorum sıra numarası ile. Nasıl bir bağlantı kurabilirim?
  • 24-05-2020, 21:19:41
    #2
    Objelerin her birini ayrı ayrı tanımlayın sonra diziden yer değiştirmek yerine oyun mantığını kullanarak o konuma ışınlayın.



    örneğin x objesinin sonraki yeri şöyle

    y objesinin x-y-z kordinatları x+gidecekkadar y+gidecekkadar z+gidecek kadar ilerletebilirsiniz.
  • 24-05-2020, 21:44:51
    #3
    HEGEL adlı üyeden alıntı: mesajı görüntüle
    Objelerin her birini ayrı ayrı tanımlayın sonra diziden yer değiştirmek yerine oyun mantığını kullanarak o konuma ışınlayın.




    örneğin x objesinin sonraki yeri şöyle

    y objesinin x-y-z kordinatları x+gidecekkadar y+gidecekkadar z+gidecek kadar ilerletebilirsiniz.
    Hocam başlangıçta buna benzer bir şey yapıyordum zaten ama sadece konum değil bir çok şeye erişmem gerekiyor artık. Her objenin pozisyonu, içinde tuttuğu script, sprite renderer, çocuk nesneler. Her şeyi manager üzerinden kontrol etmem lazım. Bu yüzden sıra numarasına göre erisebilmem önemli
  • 26-05-2020, 04:38:58
    #4
    Elementten kastınız class mı? Bu kısmı anlamadım ancak sıra numarasından kastınız ID ve bu sizin için önemliyse sortedlist veya dictionary kullanabilirsiniz. Kullanım amaçlarını araştırınız.

    SM-N950F cihazımdan Tapatalk kullanılarak gönderildi
  • 26-05-2020, 06:01:30
    #5
    Gressx adlı üyeden alıntı: mesajı görüntüle
    Elementten kastınız class mı? Bu kısmı anlamadım ancak sıra numarasından kastınız ID ve bu sizin için önemliyse sortedlist veya dictionary kullanabilirsiniz. Kullanım amaçlarını araştırınız.

    SM-N950F cihazımdan Tapatalk kullanılarak gönderildi
    Array içerisindeki elementler hocam. Element 0, 1,2 diye gidiyor id numaraları.

    Aslında dolaylı yoldan çözdüm yukarıdaki sorunu ama daha sağlam bir algoritma arıyorum. Dictionary kullanımına bir kaç kez bakmıştım ama karışık geldi ve yapmak istediğim şeyi tam karşılıyor mu emin olamadım örnekler ve konu anlatımlarına bakarak.

    Şöyle özetleyebilirim. Sahnede 3 tane nesnem var (şimdilik). Bir dizi içerisinde bu nesnenin kendisini, sıra numarasını ve konumunu tutmam lazım. Her nesnenin bir numarası var ve dinamik olarak değişecek sabit değil. Konumu da aynı şekilde sabit değil, dinamik olarak değişecek. Aslında obje havuzu diyebiliriz.

    Şimdi en alttan yukarı doğru sırasıyla 1,2 ve 3 numaralı nesnelerim var. Ben en alttaki nesneye dokunursam bunun numarası 4 olacak ve konumu 3. Nesnenin konumunun üzerinde rastgele bir vector alacak.
    Şimdi ekranda aşağıdan yukarıya 2,3 ve 4 numaralı nesneler var. Ben en alttaki 2 numaraya tiklarsam aynı şekilde bu 5 numaralı nesne olup konumu 4 numaranın üstüne gelecek. Sonsuz oyun ve 3 nesnem obje havuzundan çağırılıyor. Dinamik olarak konum ve sıra numarası değişmesi lazım.

    Evet bunu yapmak zor degil ama ben objelerin de kendi arasında iletişim kurmasını altındaki ve üstünde ve en üstteki nesneyi bulabilmesini istiyorum. Ayrıca dış nesneler de bunlarin sırasını bilebilmeli. Bu yüzden bütün işi gamemanager scripti ile dışarıdan kontrol etmem lazım. Buradaki sıra numarası ve konumu güncelleyip objelere atama yapıyorum.

    Buraya kadar sorun yok. Listelerde her bir elementin içinde 3 değişken tutuyorum. Objenin kendisi, objenin ekrandaki sıra numarası ve objenin ekrandaki konumu. İşte burada sürekli for ve forech döngüleri kullanıp sürekli minimum maximum verileri bulup başka bir listede tutup sonra bunları birleştirip objelere erişip güncellemek gibi ekstra işlemler yapmam gerekiyor şuanda.

    Objeleri, zaten listede tuttuğum ve sürekli değişen sıra numarasına göre bulabilsem her şey çözülecek.

    Yani ekranda 5,6 ve 7 numaralı objeler var mesela aşağıdan yukarıya. Ben 6. Sıra numarası olan objeye erişmek istiyorum ama halihazırda bunun için kodu 4-5 işlemden geçirmem lazım. Oyun dinamiği tamamen bunun üzerine kurulu.
  • 26-05-2020, 15:29:11
    #6
    Bunun için dizine birde sıra numarası vererek çözebilirsin gibi duruyor

    D 4
    C 3
    B 2
    A 1 => Tıklandı rasgele sıra numarası 3 belirlendi 3 ve 3 ten küçük nesnelerin sıra numaraları -1 azaltıldı. Tıklanan nesneye yeni değeri atandı.

    D 4
    A 3
    C 2
    B 1
  • 26-05-2020, 15:34:27
    #7
    element dediğiniz şeyleri prefab ten create ederek mi oluşturuyorsunuz?
  • 26-05-2020, 16:29:32
    #8
    Stanley_ adlı üyeden alıntı: mesajı görüntüle
    Bunun için dizine birde sıra numarası vererek çözebilirsin gibi duruyor

    D 4
    C 3
    B 2
    A 1 => Tıklandı rasgele sıra numarası 3 belirlendi 3 ve 3 ten küçük nesnelerin sıra numaraları -1 azaltıldı. Tıklanan nesneye yeni değeri atandı.

    D 4
    A 3
    C 2
    B 1
    Bu şekilde değil hocam. Halihazırda Arraylist içerisinde sıra numarası tutuyorum zaten. Bu sıra numarası dediğim level gibi bir şey olacak. Yani sonsuza kadar artacak. Benim sıra numarası en küçüğe, en büyüğe, seçili objenin sıra numarasından bir eksiğine ve bir fazlasına bir şekilde ulaşmam lazım. Şuan zaten bunu yapıyorum ama çok dolaylı yollarla.
    Direkt benim belirlediğim ve sürekli değişen sıra numarasına göre erişebilmem lazım.

    Seyit25 adlı üyeden alıntı: mesajı görüntüle
    element dediğiniz şeyleri prefab ten create ederek mi oluşturuyorsunuz?
    Hocam bir dizi oluşturunca her bir öğesi element olarak isimlendirilir. Elementler bu şekilde.
    Start içinde instantiate ediyorum. Ama oyun boyunca obje havuzu mantığında sadece sıra numarası (level gibi bir şey) ve konum değişiyor arraylist içinde. Yani oyun başladığında 1,2,3 sıra nimarasi olan objeler varken. Oyunun ileriki bir aramasında mesela 45,46,47 sıra numaralı objeler olacak.

    Olay çok karışık olduğu için anlatması da zor. Kimse tam anlamamış sorunu galiba. PC geçince ekran görüntüsüyle kodları da paylaşayım inşallah.



    HEGEL adlı üyeden alıntı: mesajı görüntüle
    Objelerin her birini ayrı ayrı tanımlayın sonra diziden yer değiştirmek yerine oyun mantığını kullanarak o konuma ışınlayın.




    örneğin x objesinin sonraki yeri şöyle

    y objesinin x-y-z kordinatları x+gidecekkadar y+gidecekkadar z+gidecek kadar ilerletebilirsiniz.
    Gressx adlı üyeden alıntı: mesajı görüntüle
    Elementten kastınız class mı? Bu kısmı anlamadım ancak sıra numarasından kastınız ID ve bu sizin için önemliyse sortedlist veya dictionary kullanabilirsiniz. Kullanım amaçlarını araştırınız.

    SM-N950F cihazımdan Tapatalk kullanılarak gönderildi
    Stanley_ adlı üyeden alıntı: mesajı görüntüle
    Bunun için dizine birde sıra numarası vererek çözebilirsin gibi duruyor

    D 4
    C 3
    B 2
    A 1 => Tıklandı rasgele sıra numarası 3 belirlendi 3 ve 3 ten küçük nesnelerin sıra numaraları -1 azaltıldı. Tıklanan nesneye yeni değeri atandı.

    D 4
    A 3
    C 2
    B 1
    Seyit25 adlı üyeden alıntı: mesajı görüntüle
    element dediğiniz şeyleri prefab ten create ederek mi oluşturuyorsunuz?
    Daha anlaşılır bir konu açtım lütfen yardımcı olun. Oyun dinamiği bunun üzerine kurulu, daha pratik yol bulamayınca devam edemiyorum 1 haftadır.

    https://www.r10.net/android-programl...ardim-r10.html