Hocam ben şimdi 15 tane leveli olan bir oyun yapmaya çalışıyorum.Şuanda oyunumun ilk leveli bitti sayılır.İkinci leveldeyim kod tekrarı çok fazla var ve ben bunları nasıl tek bir kodda toplayabilirim.Yani şunu demek istiyorum.Ben tüm sahneler adında bir script oluştursam SceneManager.GetActiveScene().buildindex; komutu ile de bu indexe uyan sahnedeki tüm verileri çeksem diyorum.Bunu yapmak için benim aklıma inheritance geldi ama onuda yapamıyorum.Çünkü hepsi monobehaviourdan alıyor değerleri sizce buna nasıl bir çözüm üretilebilir?
Problemin detaylarını bilmediğim için spesifik bir örnekte bulunamıyorum ama verdiğiniz tanıma bence de inheritance uyuyor. 2 class X script’inden türeyecekse ve aynı zamanda MonoBehaviour olmaları gerekiyorsa, X’i MonoBehaviour’dan türeterek bunu başarabilirsiniz. ScriptableObject de belki probleminize çözüm olabilir, onu da araştırabilirsiniz.
Hocam unity’de run time zamanında bir sahneden diğer bir sahneye geçiş yapıyoruz ya arkaplanda önceki sahnenin verileri falanda tutuluyor bu güzel birşey ama ben bölümü kaybettim oyunu sıfırdan başlatmam gerekli sceneManager.Loadscene(sceneManager.GetActiveScene().buildindex); verdiğimde
sahneyi geri yüklüyor ama oyunu ilk açtığım gibi değil.Bunun için değişkenler oluşturup sıfırlanması gereken değişkenleri sıfırlamak ilk aklıma geldi.Ama şöyle düşününce bunu sıfırdan açmakda olabilmeli bence.Hocam böyle bir şey var mı?
NullReferenceException: Object reference not set to an instance of an object
UnityEditor.Graphs.Edge.WakeUp () (at :0)
UnityEditor.Graphs.Graph.DoWakeUpEdges (System.Collections.Generic.List`1[T] inEdges, System.Collections.Generic.List`1[T] ok, System.Collections.Generic.List`1[T] error, System.Boolean inEdgesUsedToBeValid) (at :0)
UnityEditor.Graphs.Graph.WakeUpEdges (System.Boolean clearSlotEdges) (at :0)
UnityEditor.Graphs.Graph.WakeUp (System.Boolean force) (at :0)
UnityEditor.Graphs.Graph.WakeUp () (at :0)
UnityEditor.Graphs.Graph.OnEnable () (at :0)
Hocam bide bu oyun başladığında bir kereliğine mahsus hata veriyor.Nerede yanlış yapmış olabilirim?
Bu Unity’nin bir hatası, yoksayabilirsiniz.
Static değişkenleri diyorsanız onları otomatik reset’leyen bir sistem benim bildiğim kadarıyla yok. Oyuna full restart atmaya yarayan bir yöntem de bilmiyorum maalesef. Reset’leme işlemini elle yapmalısınız gibime geliyor.
Tamamdır hocam teşekkürler
Hocam addressable konusu hakkında türkçe kaynak yok. Rica etsem o konuda bir yazı yazar mısınız? Ayrıca hocam sizi youtube’da da görmek isteriz.
Addressables’ın ders yazılabilecek güzel bir konu olduğu konusunda haklısınız. Şu anda buna pek imkanım yok, ileride belki yazma imkanım olabilir ama yakın zamanda beklemenizi önermiyorum.
Hocam prefab nesnemi birden fazla kez kullanıyorum.Ben bu objemin özelliklerini statik verirsem.Birinin canı azaldığında aynı prefab’e bağlı nesnelerinde canı azalıyor.Ben bunları public yaptığım takdirde obje bulunamadı hatası alıyorum.Başka bir yolu var mıdır bunun aynı prefab’den olucaklar ama canları birbirinden bağımsız olucak.
https://www.youtube.com/watch?v=c4XwOm3e8iI&ab_channel=mustafay%C4%B1ld%C4%B1r%C4%B1m
hocam problemi görsel olarak göstermek için videoya çektim problem tam olarak video anlattığım şekilde çıkıyor.
Bide hocam benim bu oyunum neredeyse bitmek üzere vuruş sistemi ve animasyonlar kaldı bi.1.level için 4000 5000 satır kod yazdım 15 level yapmayı düşünüyorum 15000 satır hatta daha da fazla kod çıkabilir sizce fazla mı olmuş.Size sorayım dedim?yani şuanda ben 20 karakterin işlemleriyle uğraşıyorum beraberinde oyuna 76 karakter daha ekledim onlarında vuruş sistemi vs yapılıcak.Dediğimden daha da fazla kod çıkabilir:)
Satır sayısı oyununuzun karmaşıklığına bağlı bence. 15000 kulağa az gelmiyor; eğer kendini tekrar eden çok fazla kod yazdıysanız kodunuz fazladır, aksi halde normal de olabilir.
Hata veren satırdan önce Debug.Log(“asd”, item.transform); yapıp konsola gelen “asd” log’una tıklayın. “item” kim ise o Hierarchy veya Project panelinde vurgulanacak. Ardından o objeye tıklayıp o objede gerçekten bir AskerScript var mı ve varsa asker1savas değişkeninin değeri var mı kontrol edin. Eğer bu bir prefab ise, prefab’ların OnEnable’ı bildiğim kadarıyla çağrılmaz.
Hocam ben internetten 2D göze hitap eden spritelar bulup indiriyorum.Bu spritelar 45×45 gibi küçük oluyolar.Ben bunları oyunlarımda kullanabileceğim bir boyuta getirdiğim zaman resmin bulanıklığı artıyor.Bunun önüne nasıl geçebilirim.Kullandığınız bir program var mı?
Ben resim düzenleme işlerimi Photoshop üzerinden yapıyorum ama resim büyütmek daha önce yaptığım bir şey değil. Şu videoda tanıtılan servisleri kontrol edebilirsiniz: https://www.youtube.com/watch?v=5LrPKoNvPPc
Hocam bu https://pixlr.com/tr/e/ siteden yapıyorum bende resimaç/sayfa/sayfayıyenidenboyutlandır diyorsun orda istersen kendi standart ölçümlerini bozmadan arttırım yapıyor 50×50 x’eksenini 150 yaparsam y eksenide 150 oluyor. Ama orda oranları koruyu kapatırsan kendin ölçüm verebiliyorsun.
Yani bu site ile çözümü buldunuz diye anlıyorum, hayırlı olsun 🙂 Kullandığınız siteyi paylaştığınız için teşekkürler ^^
Yok hocam o problemi hala çözemedim.Size sorduktan sonra technopattan soru sormuştum.Aynı size sorduğum şekilde biri yazdı photoshop gibi bir kaç program yazdı tutoriallerini izle dedi.Onu öyle halletmeye çalışacağımda benim o siteyi paylaşma sebebim siz dediniz ya “resim büyütmek daha önce yaptığım bir şey değil”ondan yazdım.Mesela resimleri bu dediğim siteden büyütüp netleştirmesini de photoshopdan yapabilirsiniz diye düşündüm.
Merhabalar hocam,bende şöyle bir sorun var.Daha doğrusu sorun değilde bu istenmeyen bir şey olduğu için çözümü ne onu sorucam hocam.Şimdi build almış olduğumuz bir projeyi biz defalarca kez açabiliyoruz.Bunun önüne nasıl geçebiliriz?
Açtığınız EXE’nin kendisini imha etmesini mi istiyorsunuz yoksa yanlış mı anlıyorum?
Hocam aslında öyle değilde eğer açılmış bir oyun varsa bunu açmasın beni açılmış oyuna yönlendirsin sorundan tam olarak şurda bahsettim hocam https://www.youtube.com/watch?v=wrzjMIsJlAU&ab_channel=mustafay%C4%B1ld%C4%B1r%C4%B1m
Player Settings’te “Force Single Instance” ayarı varmış, onu açmayı deneyebilirsiniz.
Tamamdır hocam yazdığınız “Force Single Instance” özelliği problemi çözdü teşekkür ederim
Selamın aleyküm hocam.FindGameObjectWithTag(tek),FindGameObjectsWithTag(çok) bu iki kodun biri bu tag’e sahip tek bir obje döndürürken diğeri bu tag’e sahip birden fazla obje döndürüyor ya hocam.Ona benzer GameObject.Find komutunun içerisine biz string bir değer giriyoruz.Ve GameObject.Find komutu tek bir değer döndürüyor ya.Ben bu isme sahip birden fazla gameobject döndürmek istiyorum ama tag kullanmadan. Bunu nası yapabilirim tam olarak var mı yolu? Ben internetten baktım ama bulamadım.
FindObjectsOfType yapıp sonra dönen objelerin isimlerini tek tek kontrol etmeniz lazım ama performansının iyi olacağını sanmıyorum. Alternatif bir çözüme gitmenizi öneririm. Bu objeleri Awake’te static bir List’e ekleyip OnDestroy’da listeden kaldırabilirsiniz mesela.
Hocam ben karakterin öncelik sırası ile alakalı bir sorun yaşıyorum.Aynı kodumda iki objem var ve istediğim şeyin belirli şartlar altında diğer objenin önüne geçmesi gerekiyor.Daha iyi anlatabilmek adına video çektim.https://www.youtube.com/watch?v=W9Cqh9EIMqA
buradaki sorunu nasıl çözebilirim
TextMesh Pro’nun Inspector’unun en altındaki Extra Settings’i açarak Order in Layer’ını değiştirebilirsiniz.
Teşekkürler hocam nokta atışı yaptınız.
Selamun aleyküm hocam, ben main camera ‘nın hem player’ ı belirli bir mesafeden takip etmesini hem de player ile birlikte dönmesini sağlamak için şu şekilde kod yazdım fakat takip etmesine rağmen dönmüyor. Kodum şu şekilde;
public Transform player;
private Vector3 offset;
void Start()
{
offset = transform.position – player.transform.position;
}
void LateUpdate()
{
transform.position = player.transform.position + offset;
}
void Update()
{
transform.LookAt(player);
}
}
Aleykümselam. “offset = player.transform.InverseTransformDirection(transform.position – player.transform.position);” ve “transform.position = player.transform.position + player.transform.TransformDirection(offset);” deneyebilirsiniz.
hocam aslında aradığım bu tarzda bir takip değil. Bu kod ile sanki main camera, player’ ın child’ ı gibi topla beraber dönüyor. Benim istediğim ise mesela araba sürerken araba sağa döndüğünde main camera da araçın döndüğü yönü algılasın ve onunla aynı yönde dönsün gibi. Yani benim oyunumda player harita gereği sağa döndüğü zaman kamera da player ile mesafesini korusun ama sağa dönsün. oyuncunun bakış açısı rahatlasın.
Kamera yukarı aşağı da iniyor, siz onu istemiyorsunuz diye anlıyorum. Şu kodu deneyebilirsiniz:
Vector3 forward = player.transform.forward;
forward.y = 0f;
transform.position = player.transform.position + Quaternion.LookRotation(forward) * offset;
Hocam hiçbir etkisi olmadı bu son yazdığınız kodun. Bir de bu kodların daha fazlasına nasıl ulaşabilirim?
Ben belki yapmak istediğiniz şeyi tam anlamamışımdır. Aklıma GTA Vice City gibi bir araba kamerası geliyor benim hep. Transform class’ındaki tüm fonksiyonlara şuradan erişebilirsiniz: https://docs.unity3d.com/ScriptReference/Transform.html
Aynen benim de aradığı o tarz bir kamera takibi doğru anlamışsınız ama benim oyunumda player bir “sphere” ve bu player bir mesela labirentte dönerken kamera da player ile aynı yönde aralarındaki mesafeyi koruyarak takip etmesini istiyorum.
Hmm, yuvarlanarak ilerleyen bir sphere’de Transform’un ileri yönünden bence bahsedemeyiz ama isterseniz Rigidbody’sinin velocity vektörünü ileri yönmüş gibi varsayıp player.transform.forward’ı onunla değiştirebilirsiniz.
nasıl yani anlamadım şimdi ben nasıl bir yol izleyeceğim?
Yorumumda dediğim gibi, player.transform.forward yerine Rigidbody’nin velocity’sini kullanmayı deneyebilirsiniz. Başka bir şey aklıma gelmiyor.
Anladım hocam yardımınız için teşekkür ederim. Bir de bir şey daha soracağım bu sorudan bağımsız olarak ben hazır kod kullanmak yerine kendim kod yazmak istiyorum ama bunu nasıl sağlayabilirim? Yani mesela “transform.LookAt(target);” şu tarz bir kodu sizin attığınız linkteki kodlar arasından seçip kendim yazmak istiyorum ama neye göre transform’ u kullanmak gerekiyor, neye göre LookAt kullanmak gerekiyor? Ben bunu çözemedim. Bu zamana kadar hazır kod kullandım. Kendim kod yazmak istiyorum artık. Yardımcı olabilir misiniz?
Bence kendi kodunuzu yazmak tecrübe ile oluyor. “LookAt fonksiyonu A objesinin B’ye bakmasına yarar” bilgisini hazır kodlardan, internetten veya deneye yanıla öğrendiniz ve daha sonra aynı bilgiye ihtiyacınız olduğunda ya aklınıza direkt gelecek ya da “daha önce X projesinde böyle bir şey yapmıştım, bakayım napmışım” diyeceksiniz. Benzer şekilde, “Transform component’i objenin 3D uzaydaki konumunu tutar” bilgisini öğrendiğiniz için, ileride objenin 3D uzaydaki konumunu, rotasyonunu veya boyutunu değiştirmek istediğinizde aklınıza Transform gelecek. Bence bol bol tutorial izleyip öğrendiklerinizi pratiğe dökerek kendinizi geliştirmeye devam edebilirsiniz, bence bu esnada illa ki daha önceki tecrübelerinizden faydalanarak kendi kodlarınızı da farkında olarak veya olmayarak yazacaksınız.
Anladım zamanla olacak diyorsunuz yani kısaca.
Aynen, benim düşüncem öyle en azından.
Anladım çok teşekkür ederim hocam yardımınız için.
Merhaba hocam,ben instantiate komutumla oluşturduğum karakterimi bir konumun child’i yapmaya çalışıyorum ama böyle bi hata alıyorum.
“Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption (GameObject: ‘Amidala’).
UnityEngine.Transform:SetParent (UnityEngine.Transform)”
oluşturulan karakterler bir parent’a atanamaz diyor.Ben bunu nasıl devre dışı bırakabilirim.Karakterimin istediğim konumun child’i olması gerekiyor.
Hatanın dediğine göre, Instantiate ettiğiniz objenin parent’ını değiştirmiyorsunuz, o objeyi Instantiate ederken kullandığınız prefab’ın parent’ını değiştiriyorsunuz.
Tamamdır hocam teşekkürler 🙂
Merhaba hocam ben şuanda projem gereği oyun yapıyorum.Yaptığım oyunda level sistemi olucak ve veri kaydı olucak.Verileri ilk başta kendi local serverimde tutmak istiyordum ama şimdi bunun için php bilmek gerekiyor ve henüz php görmedik.Bende bunları şimdilik bir metin belgesine kaydedeyim diyorum.Bu sitede varmı basit bir şekilde sıradan bir metin belgesine veri kaydetme yoksa başka sitede varmı istediğim türde kayıt yapabileceğim bildiğiniz ?
Kendi derslerim arasından aklıma sadece şu geliyor: https://yasirkula.com/2020/04/03/unity-jsonutility-kullanimi/. Başka sitelerden aklımda kalan önerebileceğim bir kaynak maalesef yok.
Tamamdır hocam teşekkür ederim.
Oyunumda veri kaydetmem gerekli.Ama unity hakkında eğitim veren neredeyse herkes PlayerPrefs ile veri kaydetmenin güvenli olmadığını verilerin kolaylıkla değiştirilebileceğini söylüyor.Tam olarak benim playerprefs ile kaydettiğim veri nereye gidiyor ben erişip değiştirebilir miyim bunu nereden öğrenebilirim?
Bide ben proje oluşturup build aldığım zaman dosyalarım 4 mayıs 2022’de oluşturulmuş gözüküyor.Buna yapabileceğim bir şey yok mu?
PlayerPrefs’in diskte nereye kaydolduğunu şuradan öğrenebilirsiniz: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html. Güvenli olmadığı bilgisi doğru bir bilgi ama bunun bir tık önüne geçmek için PlayerPrefs’i şifreleyen asset’ler mevcut. Kullanmadım ama örneğin: 1, 2. Bir dosyanın tarihini değiştirmek için File.SetLastWriteTime, File.SetLastAccessTime ve File.SetCreationTime fonksiyonlarını inceleyebilirsiniz.
Vaktinizi ayırdığınız için çok teşekkür ederim.
Merhaba hocam. Telefondan bi görsel seçip onu bi sunucudaki klasore nasil kaydedebiliriz? Ordanda cekip sahnede bi image e sprite olarak atamam lazim. Bi assetiniz var gorsel secip texture olarak atayabiliyoruz ama onu bi klasöre nasil kaydedip cekebiliriz?
Daha önce de dediğim gibi sunucu işlerini maalesef bilmiyorum. İnternette bu konuda faydalı kaynaklar bulabilirsiniz umarım.
Merhaba hocam,yeni bir oyun yapmaya başladım.Oyunum sıra tabanlı bir savaş oyunu
karakterimiz dusman objemize movetowards komutu ile gidiyor 0.08 lik bir yumuşatma değeri verdim şuanlık vuruşu ve hızı iyi ben oyunumda çeşitli bufflar düşünüyorum mesela 30dk’lık oyun hızını 1.5 katına çıkarsın diyorum.
Time.timeScale=1.5f;
komutumu start veya update methodumun içerisine yazınca sadece oyunumun hızını değiştiriyor.Karakterlerimin vector3.movetowards ile gitme süresini hızlandırmıyor.
Ben sadece Vector3.MoveToWards(transform.position,hedef.position,0.08f*Time.timeScale*2)’ta bu şekil yazıncada hareketimi 2 katına çıkartıyor ama oyunumun hareketini 2 katına çıkartmıyor.
update()
{
Time.timeScale=2;
——
Vector3.MoveToWards(transform.position,hedef.position,0.08f*Time.timeScale)’
}
böyle yazdığım zamanda oyunum 2 taraftanda 2 katına çıkmış oluyor.Benim anlamadığım şu hocam benim movetowards fonksiyonum neden time.timeScale komutunun hızını algılayamıyor.Ben niye oyunumun hızını 2 katına çıkarmak için Vector3.MoveToWards(transform.position,hedef.position,0.08f*Time.timeScale) komutunu yazmak zorundayım ki?
Benim bildiğim kadarıyla timeScale’i değiştirince oyununuz 60 fps’ten 120 fps’e çıkmıyor, yine 60 fps’te çalışıyor ama Time.deltaTime değeri timeScale’le doğru orantılı olarak değişiyor. Oyununuz timeScale’den bağımsız olarak sürekli 60 fps’te çalıştığı için de, karakteriniz her frame aynı miktar yol gitmeye devam ediyor. Bunu çözmek için timeScale’le çarpmak yerine deltaTime ile çarpmanızı öneririm ki oyunun fps’i düşse bile karakterin hızı bozulmasın. Mesela şunun gibi: “10f * Time.deltaTime”. deltaTime ile ilgili araştırma yapınca konuyla alakalı epey doküman bulabilirsiniz.
Merhaba hocam,Sizden bir tavsiye istiyorum.Bir oyun yaptığımızı düşünelim mesela 100 sahnelik bir oyun olsun.Her sahnede birbirinden farklı olaylar oluyor gibi düşünelim.Normal şartlarda tek bir script yazılıyor ya sahneler için falan.Ama şimdi 100 bölümlük bir oyun düşündüğümüz zaman script çok karman çorman olucak.Onun yerine her sahne için bir script oluşturmak mı(Birden fazla tekrar edicek kod var daha çok uğraştırıcak ama karışıklık azalıcak)yoksa tek script ile tüm sahneleri ayarlamak mı?(Tek kodla yönetilicek.Her sahnede farklı olay olacağı için karışıklık çok olucak ama tekrar eden kod olmuyacak)hangisi daha mantıklı sizce?
Alternatif olarak bir class’ı başka class’tan da türetebilirsiniz. Örneğin ortak kodları LevelBase diye bir class’ta yazarsınız daha sonra farklılık gösteren kodlar için LevelBase’ten türeyen class’lar yazarsınız.
Selamun aleyküm hocam, Unity için A* algoritmasını öğrenmenin yararlı olduğunu öğrendim de ne işe yarar bu algoritma oyun yapımında herhangi bir bilginiz var mı?
Aleykümselam. A* pathfinding’de kullanılıyor. Mesela NavMesh sistemi ile obje bir noktadan başka noktaya duvarlara çarpmadan hareket ederken kullanılıyor. Örnek video ders: https://www.youtube.com/playlist?list=PLFt_AvWsXl0cq5Umv3pMC9SPnKjfp9eGW
Selamun aleyküm hocam Unity ‘de kullandığım ücretsiz assetler için telif yer miyim? Ayrıca para kazanmama engel olacağına dair bir bilgiye ulaştım. Ne kadar doğru bir bilgi olduğunu bilemediğimden size sormak istedim
Aleykümselam. Bkz. https://yasirkula.com/ziyaretci-defteri/#comment-64337
anladım hocam teşekkürler
Unity’de oluşturmuş olduğum projeyi Unity Hub listesinden sildim ve PC’ye format attım. Ben o projeye herhangi bir şekilde tekrardan ulaşım sağlayabilir miyim? Unity’nin sayfasında oluşturmuş olduğum hesapta filan bulunmaz mı?
Projeyi Unity Hub’dan sildiğinizde proje diskten silinmiyor ama format atarken diski de temizlediyseniz o zaman projeniz maalesef tamamen silinmiştir. Unity’nin kendi Version Control sistemlerinden birini veya Git gibi harici bir Version Control sistemini kullanmıyorsanız, projeniz bulutta yer almaz. İsterseniz silinen dosyaları geri getirmeye yarayan programları kullanmayı deneyebilirsiniz.
anladım hocam teşekkürler
Hocam öncelikle merhaba Gamejam’e katıldığım için yeni sorular soramamıştım 🙂
Hocam benim tahminlerime göre pivotta sıkıntım var.
https://www.youtube.com/shorts/TN8auHQwQN8
burda dönüşte yaşadığım problem var
https://www.youtube.com/shorts/900AYO5boc0
burada objelerimin parçalanmış hali
Ben deneme amaçlı bir karakter yapıyordum.Eskiden 10 karakter için 10 tane idle animasyonu yapıyordum bu artık baya saçma geldi.Bende bir yerde görmüştüm.Tek bir animator ve tek bir animasyonla 6 karakteri birbirine bağlamış.Bende aynısını yapıp 3 karakteri birbirine bağladım.Bir problem çıkmamıştı ama şimdide dönerken ilk attığım linkteki gibi bir problem oluşuyor pivot noktasını nasıl değiştirebilirim sizce kime sorduysam cevaplıyamadı.Ben sizin bilebileceğinizi düşündüğüm için yazdım hocam.Benim istediğim kendi ekseninde dönsün.Ha bide şu var hocam ana menüdeki Rotate tool ile çevirince benim istediğim gibi kendi ekseninde dönüyor ama rotation ile çevirince aynı videodaki gibi dönüyor.
Yukarıdan pivot modunu Center’dan Pivot’a çekmeniz lazım. O vakit pivot gerçekten nerede görebilirsiniz. Sonra karakterin child’larını pivot düzgün noktaya gelene kadar sola kaydırabilirsiniz.
Hocam çok sağolun,Ben o sorduğum yerlerde de sitenin linkini paylaşırım belki oradan da bir kaç arkadaş soru sormak ve siteyi keşfetmek için gelebilir.
Tabi ki ^^
Hocam bazı yabancı kaynaklarda bu işaretleri kullanıyorlar << , >> , ~ ne işe yarıyor tam olarak bilmiyorum,bunlar ne işe yarıyor bilginiz var mı?
Birde
RaycastHit2d hit =physics2d.Raycast(transform.position,Vector3.Down);
if(hit.collider.gameObject.CompareTag(“Zemin”))
{
rb.velocity=new Vector2(0,jump*time.DeltaTime*10);
}
böyle bir kod yazdığım zaman objem yerin altına ışın göndermiyor.Biraz oynadım üstünde sağa çevirdim sola çevirdim farklı yönlerde gözüktü ışın ama objemin tam altına gelmedi.Sonra şöyle bir kod yazdım
if(hit.collider!=null)
{
Debug.Log(hit.collider.Name);
}
Bu kodun çıktısındada benim objemin adını veriyor.Ben kendi objemi yoksaymasını istiyorum.Bu baya karışık geldi hocam 2d oyunda direk physics.Raycast gönderirsem bir sıkıntı çıkarmıyor ama 2d oyunda raycast2D gönderirken kendisine çarpıyor ışın.
Bahsettiğiniz semboller bitler üzerinde işlem yapmaya yarıyor (mesajınızda o karakterlerin tam çıkmamasının sebebi, WordPress’in onları HTML etiketi olarak algılaması). Örneğin bir byte’ta 8 bit var, her bit 0 veya 1 değerine sahip. “byteDegisken << 2” yaparsanız, bu bitler 2 birim sola kaydırılır. Yani 01000111 ise bitleriniz, bu 00011100 olur. Fark ettiğiniz üzere, en soldan dışarı çıkan 1 biti kaybolur, en sağa da daima 0 biti eklenir. Çok ender de olsa, tamsayıları 2 veya katları ile çarparken bu yöntem kullanılabiliyor çünkü bitleri iki kere sola kaydırmak, sayıyı 2 üzeri 2 ile yani 4 ile çarpmaya denk geliyor. Ama genelde bitler üzerinde işlem yapmak için, belli bir bit’in değerini öğrenmek için kullanılıyor. >> bitleri sağa kaydırmaya yarar. ~ ise bitleri tam tersine çevirmeye yarar (0’lar 1 olur ve 1’ler de 0 olur). & ve | operatörleri de bitler üzerinden işlem yapmaya yarıyor. & kullanıldığında, iki sayının aynı sıradaki bitleri kıyaslanıp bunların ikisi de 1 ise dönen sayının o biti 1 oluyor, yoksa 0 oluyor. |’da ise iki bitten biri bile 1 ise dönen sayının biti de 1 oluyor. Diyelim sayının sağdan 3. bitinin 0 mı 1 mi olduğunu öğrenmek istiyorsunuz. Sayınız 01000101 olsun. Bu durumda “bool sonuc = ((sayi >> 2) & 1) == 1;” yapabilirsiniz. Arkaplanda sayı bitleri 2 sağa kayınca 00010001 oluyor. (00010001 & 00000001)’nin değeri de 00000001 oluyor yani 1 oluyor, sonuc değişkeni true oluyor. Veri sıkıştırmak istediğinizde bu veriyi bitlere sıkıştırmak faydalı olabiliyor. Fark ettiğiniz üzere, bir byte’ta 8 boolean sıkıştırabiliyorsunuz. Normalde bir boolean 1 byte olduğu için, bitleri kullanmak %87.5 yer tasarrufu anlamına geliyor.
Raycast’lere LayerMask verebiliyorsunuz. Karakteri özel bir layer’a alıp raycast’e o layer’ı içermeyen bir LayerMask değişkenini parametre olarak verin. Veya sadece zemin layer’ını içeren bir LayerMask verin (ihtiyacınıza göre).
Hocam ben “Sıfırdan proje oluşturuyorum mesela dll ve exe 5 ay öncesinde oluşmuş gibi gözüküyor.Diğer dosyalar şimdiki tarihi gösteriyor neden böyleki ?
Birde game ekranına baktığım oyun build alınca biraz daha yakın veya biraz daha uzak oluyor ben bunu ayarlıyıp ikisinide nasıl eşitleyebilirim?” böyle bir soru sormuştum ama sorum gözükmüyor sanırım buggta kaldı.
Dosyalar ilk ne zaman oluşturulduysa o tarih gözüküyor, bu dosyaları Unity’nin klasöründen projenizin klasörüne kopyalayınca tarihi değişmiyor. Değişmesi için dosyayı düzenlemeniz gerekiyor. Game ekranının uzaklığının aynı olmamasını gözümde canlandıramadım çünkü kameranın yüksekliği ne olursa olsun aynı olur, bu da mesafenin aynı olması anlamına geliyor. Siz kameranın genişliği aynı olsun, yüksekliği farklı olsun mu istiyorsunuz?
Hocam oyunuma game ekranında baktığımda atıyorum -40’sa uzaklığı göz kararı diyorum.Build alınca kameradan uzaklığı -25 yada -55 gibi oluyor yani z eksenleri farklı çıkıyor canvas veya build settingsden ayar falan mı yapmalıyız yoksa tek tek deneye deneye uygun bir oyun mu yapmalıyız?
Canvas objeleri sıkıntılı ise Canvas Scaler’ın ayarlarıyla oynamanız lazım. Ben sadece Portrait veya sadece Landscape oynanan oyunlarda Scale With Screen Size metodunu tercih ediyorum ve Match değerini 1 yani Height yapıyorum.
Hocam ben bir oyun tasarlıyorum.Karakterim bir büyücü, bu büyücünün 8 saniyede bir ultisiyle rakibi ittirmesi gerekiyor.Ben bu ultiyi partikül efekt ile yaptım ama efektime box collider verdiğim zaman efektim karakterime temas etmiyor efekti dönderiyorum bi yamukluk var yaklaşıyorum efekt farklı bir yönde ,uzaklaşıyorum farklı bir yönde bir türlü karaktere çarptırtamadım bu oyunlardaki ulti gibi özellikleri animasyonlarla mı yönetiyolar yoksa partikül efektte kullanılıyor mu?
Box Collider çalıştığı durumda onu kullanmanızda da sakınca görmüyorum. Bu collider fizik etkileşimli variller vb. varsa onları da etkileyebilir ona dikkat etmek lazım. Box Collider şu anda nasıl bir hale bürünüyor gözümde canlandıramadım ve kodunuzu da bilmediğim için nerede hata olabilir bir şey diyemiyorum. Ulti efektini kodla da vermeniz bir seçenek, bunun için Physics.BoxCast yapıp bunun vurduğu rakipleri kod ile arkaya ittirebilirsiniz.
Hocam free assetlerin telif hakkına nereden bakıyoruz?Ücretli assetler telifli oluyor mu?Ben mağara jam’e katıldım da çoğu şeyi bilmiyorum.Yaptığımız oyunu itchio diye bir sayfa var orada paylaşıcakmışız.Orada paylaştığımız oyundaki assetler üreticiler tarafından sıkıntı çıkarır mı?Bunu nereden öğrenebilirim?
Asset Store’dan indirdiğiniz ücretsiz asset’lerin Asset Store sayfalarında veya asset’le gelen dosyaların içinde özel bir lisans sözleşmesi yoksa, ben Asset Store’un kendi lisansına dahiller diye biliyorum ve bu lisansta da benim bildiğim kadarıyla sıkıntı yaşamazsınız. En garanti bilgiyi asset’in yapımcısından, ikinci garanti bilgiyi de Asset Store’un lisansını okuyarak öğrenebilirsiniz.
Tamamdır hocam teşekkürler.
Selamun aleykum hocam, tek basima en bastan bir oyun yapmaya baslamadan once nasil bir yol izlemeliyim? Daha oncesinde 1 oyun yaptim ama hic plan program olmaksizin direkt basladim ve aklima geleni eklemeye calistim. Sonuc sanki denizin ortasinda çırpınıp duruyor gibiydim. Bu sefer nasil ilerlemem lazim ki bu sekilde oyun programlarken oyunun icerisinde kaybolmayayım?
Bu konuda pek tavsiye verebileceğimi sanmıyorum çünkü ben de yanlış bir şekilde bodoslama/doğaçlama geliştirme yapıyorum. İnternette bazı Youtuber’lar oyunlarının geliştirme aşamalarını videoya alıyorlar (X game unity devlog), belki onların nasıl bir yol izlediğini inceleyebilirsiniz.
Tamam teşekkür ederim.
Hocam ben 2D platformer bir savaş oyunu yapıyorum sorunum şu ki objem zemin tagına sahip her yerde zıplayabiliyor platformlarda zemin tagı var ve platformun sağı solu üstü her tarafından zıplayabiliyor,tırmanabiliyor ben bunu istemiyorum sade platformun üstünden zıplasın.Sonraki sorunum da objem platforma temas ettiği zaman objem hemen düşmüyor bi cebelleşiyor orda.Bu iki sorunu nasıl çözebilirim?
Zemin tag’ı ile temas ettiğinizde, temas noktasına bir şekilde erişebiliyorsunuz diye varsayıyorum (RaycastHit2D.point de olur collision2D.GetContant(0).point de). Eğer bu nokta karakterin ayak hizasındaki bir noktanın aşağısında kalıyorsa zıplayabilirsiniz, aksi taktirde zıplayamazsınız. İkinci problem, karakter platforma yandan temas edince ve siz platform yönünde input vermeye devam edince oluyor diye tahmin ediyorum. Bu benim de merak ettiğim ama henüz çözmemin gerekmediği bir problem. Bunun doğru çözüm yolu nedir bilmiyorum ama zeminin veya karakterin collider’ına bir Physics Material 2D verip bu asset’in friction değerini 0 veya düşük bir değere ayarlamayı deneyebilirsiniz. Ayrıca hareket kodunuz transform üzerinden çalışıyorsa, onun yerine Rigidbody2D üzerinden karakteri hareket ettirmeyi deneyebilirsiniz.
Hocam oyunum 2D ama her şeyini 3D yaptım ondan dolayı olabilir mi ki?
Temastan yana sıkıntı yok çarpışıyolar ama işte tırmanma sorunu baya sinir bozuyor.
2D ve 3D birleşimi sorun çıkarır mı maalesef bilmiyorum. Ben sorunu karakterin tırmanamaması değil, yere cebelleşerek düşmesi olarak anlamıştım.
Tamamdır hocam halledebildim sonunda çok teşekkür ederim size.İlk önce dash atarken transform.position kullanıyordum buda ışınladığı için bazı bugglar ortaya çıkıyordu onun yerine velocity kullanınca bug düzelmiş oldu.Sonra dediğiniz gibi yerin altından ışın oluşturdum ve karakter artık yere temas edinde zıplıyor.Bu sondaki yazdığım çoğu buggu düzeltti artık tırmanma olayıda bitti.O duvarda takılı kalma olayıda dediğiniz gibi ınput vermeye devam edince oluyor.O kaldı bi onuda üstünde biraz daha uğraşırsam hallederim.
Elinize sağlık. Ben videoda duvara takılı olmasını göremesem de, karakteri her zaman Rigidbody2D üzerinden hareket ettirdiğinizden emin olun derim. Transform’unu ellemeyin. Gerekirse Collider’lara Friction’ı az Physics Material 2D vermeyi deneyin.
Merhabalar Unityde aab çıktısı alırken api level 30da çıktıyı veriyor 30 üstünde gradle build hatası veriyor bunun nedeni nedir?
Maalesef daha önce denk gelmedim. Hata mesajında yer alan cümleyi google’da aratmanızı öneririm.
Hocam hatayı videoya aldım (hem tırmanma sorunu hemde platformdan sürterek düşüyor ve hemen düşmüyor ben tuştan elimi çekince düşüyor) size nasıl gönderebilirim?
İsterseniz YouTube’a Unlisted olarak yükleyip linkini paylaşabilirsiniz. İlk yorumumda yaşadığınız problemleri bilgim dahilinde cevaplamaya çalıştım, onları inceleyebildiniz mi?
Hocam ilk önce videoyu size göstereyim dedim.Kodu uyarlayacağım baya karışık olmaya başladı artık 700 800 satır kod yazdım neredeyse ve şimdi bunu uyarlayacağım kısmı bulacağım ve kodları düzenleyeceğim falan biraz uğraştırıcak. RaycastHit.point ,collision.GetContant(0).point ikisinide denedim ama olmadı hocam.
Karakterin cebelleşerek düşmesini videoda göremedim ama duvarın hafif içine girip sonra geri ışınlanmasını gördüm. Onu çözmek için transform.position’ı düzenlemek yerine, FixedUpdate’te rigidbody2D.MovePosition ile hareket edin. Zıplama için ise yaptığınız değişiklik nasıldı bilmiyorum ama mantıken dediğim çözümün çalışması lazım.
Tavsiyeniz için Teşekkür Ederim
Üç sorum var hocam.Invoke methodu parametreli olursa nasıl çağırırız ben denedim ama beceremedim.Animasyonlarla konuşma diyalogu yapmaya çalışıyorum ama text kısmı yok onu nasıl yapabilirim.Animasyonların eventleri nedir nasıl kullanırım?
Invoke’a parametre girilemiyor, onun yerine coroutine veya DOTween’in DOVirtual.DelayedCall fonksiyonunu kullanabilirsiniz. Animasyon kliplerinde text değerini değiştiremezsiniz ama animasyon event’leri vasıtasıyla bir fonksiyon içerisinden text’e istediğiniz gibi müdahale edebilirsiniz. Animasyon event’leri, animasyonun belli bir saniyesine ulaşınca belirlediğiniz bir C# fonksiyonunun otomatik olarak çağrılmasını sağlar. Bu fonksiyon, Animator component’ini verdiğiniz objeye atanmış bir script’te olmalıdır.
Yani bu konuşma diyalogları animation event ile yapılıyor.
Veya Timeline da kullanılabilir: https://www.youtube.com/watch?v=12bfRIvqLW4
Hocam ben bir kaç animasyon yaptım.Animasyonu (5,4,3) koordinatında oluşturdum objemin koordinatı (7,8,9) ben başlattığım da otomatikman animasyonun koordinatına gidiyor youtubedan video izledim bir objenin child’i olmalı diyor onuda yaptım ama hala aynı sonuç nasıl bir şey yapmam gerekiyor?Animasyon dosyasından mı ufak ayar yapmalıyım.
Animasyonu (0,0,0) koordinatında oluşturmanız lazım, sonra bir objenin child’ı yapıp Transform değerlerini Reset’leyip o objeyi istediğiniz yere taşıyabilirsiniz.
Hocam çok teşekkür ederim sizin sayenizde sorun çözüldü.Buradaki animasyonu(0,0,0) getirmemizdeki amaç neydi peki hocam?
Objenizi başka bir objenin child’ı yapıp Transform’unu resetlediğinizde artık Position değeri 0,0,0 oluyor. Siz objenin parent’ını nereye hareket ettirirseniz ettirin Position değeri 0,0,0 olarak kalmaya devam ediyor. Animasyonu 0,0,0’da oluşturmasaydınız da 5,0,0’da oluştursaydınız, animasyon başladığında obje 5 birim sağa ışınlanır ve animasyonu orada oynamaya başlardı. Ama animasyonu 0,0,0’da oluşturduğunuz ve obje de o Position’da olduğu için, animasyon olduğu yerde oynuyor. Eğer objenin Position değeri 0,0,0 değil -10,0,0 olsaydı, o zaman animasyonu da -10,0,0 koordinatlarında oluşturmanız gerekecekti.
Mantığı anladım hocam çok sağolun anlattığınız için.
merhaba hocam unityde balon patlatma oyunu yapıyorum. prefab la balon üretiyorum ve bunlar yüksek kuvvetle ekranın üstünde uçuyor dolayısıyla çok hızlı geçiyor. kuvveti küçük değere aldığımda da oşustuğu gibi yerçekimi etkisiyle hemen düşüyor. yerçekimi değerinide sıfırlamama rağmen ne yapabiliirim. teşekkürler
Eğer fizik kullanmak zorunda iseniz, bence kuvvete biraz daha ince ayar yapmaya çalışın (2’den 1’e çektiyseniz, 1.5’a çekin). Balonlara bir maksimum hız vermek isterseniz, FixedUpdate’te velocity değerlerini Vector3.ClampMagnitude fonksiyonuna sokabilirsiniz.
Şuanda üniversite okuyorum.Ve bir oyun şirketine girip kendimi geliştirmek istiyorum.Benim sorum,rastgele bir oyun şirketine girebilmek için ne kadar unity bilmek gerekir.Ne kadar hakim olsam yeterli olur ?
Bence bu şirkete bağlı. Bazı şirketler yetiştirmek üzere sizi kabul edebilirken bazıları Google Play’de kendi yayımladığınız bir oyununuz olmasını isteyebilir. Siz kendinizi geliştirmeye devam edip bir yandan da ilgilendiğiniz firmalara staj için mesaj atabilirsiniz.
Hocam benim anlayamadığım bir takım şeyler var.
WorldToViewportPoint,
WorldToScreenPoint,
ScreenPointToRay,
ScreenToViewportPoint,
ScreenToWorldPoint,
ViewportPointToRay,
ViewportToScreenPoint,
ViewportToWorldPoint
Sizin yazmış olduğunuz yazılara baktım ama bu yazdıklarım ile alakalı bir bilgi göremedim.İnternette de bunların farkını ne olduklarını anlatan bir türkçe kaynak bulamadım.Bunları nasıl ayırt edeceğim hocam yardımcı olur musunuz?
XToYPoint fonksiyonları bir koordinatı X sisteminden Y sistemine geçirmeye yarar. Bu sistemler:
– World: 3D uzaydaki bir nokta
– Screen: Ekrandaki bir 2D nokta (sol alt noktanın koordinatı (0,0), sağ üst noktanın koordinatı (Screen.width,Screen.height)
– Viewport: Ekrandaki bir 2D nokta (sol alt noktanın koordinatı (0,0), sağ üst noktanın koordinatı (1,1))
2D bir noktayı 3D bir noktaya çevirirken, girdiğiniz Vector3’ün z değeri, döndürülen 3D noktanın kameradan ne kadar uzakta olacağını belirler.
ScreenPointToRay,
ViewportPointToRay
peki bunlar ne oluyor hocam?
Birde youtube kanalınız var mı?
Ekrandaki bir 2D nokta yönünde Raycast atabilmek için Ray döndürür. Örneğin fare ile tıklanan objeyi bulmak için ScreenPointToRay(Input.mousePosition) ile Physics.Raycast çağrılabilir. Ders paylaştığım bir video kanalım bulunmamakta.
hocam unity deki free assestleri kulanabilirmiyiz
Asset’te özel bir lisans sözleşmesinden bahsetmiyorsa benim bildiğim kullanabilirsiniz.
hocam unity hub beta sürümü ücretsiz midir?
Beta kullanmadım ama ücretsiz olması lazım.
Merhaba hocam oyunuma her 1 saate ödül verecek birsey yapmaya çalışıyorum.oyun kapalıyken yani oyun açılmamışken 1 saatin geçip geçmediğini nasıl anlayabilirim
DateTime.UtcNow değeri, mevcut tarihi verir. Bu değeri ihtiyaca göre string olarak da istediğiniz bir yere kaydedebilirsiniz. İki DateTime’ı birbirinden çıkararak, bu iki tarih arasında ne kadar süre geçtiğini bulabilirsiniz. Ancak kullanıcı cihazının tarihini değiştirerek DateTime’ı etkileyebildiği için, gerçekten güvenli bir sistem yapmak istiyorsanız bir şekilde mevcut tarihi online bir sunucudan almalısınız. Bunun için de tabi ki internet bağlantısı ve belki de kendi sunucunuzu oluşturmanız gerekiyor.
Sağolun varolun hocam
Merhaba.Benim oyunum bitmek üzere ama bir sorunla karşılaştım.Ekrana tıklanıldığında karakterin zıplaması gerekiyor ama 2 ve ya 3 kere tıkladıktan sonra zıplıyor karakter.Bunun nedeni ne olabilir?
Tıklama input’unu FixedUpdate yerine Update veya LateUpdate’te almanız lazım.
Çok teşekkür ederim hocam.Dediğinizi yapacağım.Peki fixedupdate neden böyle bir şeye sebep olmuş?
FixedUpdate her frame çağrılmayabiliyor o yüzden ekrana tıklama gibi anlık input’lar FixedUpdate’in çalışmadığı frame’lerde gelirse yaşadığınız sıkıntı oluyor.
Ama hocam FixedUpdate her 0.02 saniyede çalışmıyor mu?Update ise her 1 saniyede.Sizi de yoruyorum çok özür dilerim.
Update her frame’de çağrılıyor, yani oyun 60 fps’te oynanıyorsa her 0.016 saniyede çağrılıyor. O yüzden de Update’in çalıştığı bazı frame’lerde FixedUpdate çalışmıyor.
Selamun aleyküm hocam, mesela if(Input.GetKeyDown()) yazdığımda otomatik olarak ne yazabileceğime dair öneri sunmuyor. Yani KeyCode, KeyFrame gibi gibi bir öneri sunmuyor. Ben hangi Plugin i kullanmalıyım ki bu önerileri bana sunabilsin. Ayrıca if(Input.GetKeyDown(KeyCode key)) yazıp açıklamada bulunmasını istiyorum. Bunlar için ne yapabilirim?
Aleykümselam. GetKeyDown yazınca fonksiyonun aldığı parametreleri gösteren kutucuğa ne deniyor bilmiyorum ama Visual Studio Community’de bu kutucuk varsayılan olarak geliyor olmalı. KeyCode, KeyFrame gibi ne yazacağınıza dair öneri veren sistem IntelliSense muhtemelen, onun da varsayılan olarak açık olması lazım.
Merhaba karaktere mixamodan herhangi bir animasyon ekleyince karakter animasyonu çok farklı pozisyonlarda yapıyor.Oldugu yerden cok farklı bölgelere gidiyor bunu nasıl çözebilirim?
Hem karakterin hem de animasyonun Inspector’daki Rig değerinin Generic değil de Humanoid olduğundan emin olun. Animasyonun Inspector’daki Animations sekmesinde yer alan “Bake Into Pose” değerlerini açmayı deneyin. Ayrıca aynı yerdeki “Position Offset” gibi değerleri değiştirmek de sorununuzun çözümü olabilir.
Hocam yeniden merhabalar.Benim bir sorunum daha var.2d oyun editor’de normal ama build aldıktan sonra spritelar büyüyor.Yoksa kamera mı yaklaşıyor anlam veremedim.Bunun bir çözümü var mı?
Editör ve build arasında kameranın Position’ı, Field of View’ı ve Orthographic Size’ı değişmiyorsa, sprite’ların da Position ve Scale değerleri değişmiyorsa o zaman spriteların boyutunun hiç değişmemesi lazım. Bu dediklerimi kontrol etmek için Remote Inspector kullanabilirsiniz: https://yasirkula.com/2020/05/24/unity-remote-inspector-kullanimi/
Teşekkürler hocan iyi ki varsınız
Hocam merhaba.2D bir oyun yapıyorum.Karakter acceleration yardımıyla hareket ediyor yani telefon ekranının hareketine göre sağa ve ya sola gidiyor.Sorun şu ki oyuncu platformla çarpışdığı zaman platformun en sağ ve ya en sol kısmına ışınlanıyor.Oyuncuda friction 0.Cevabplarsanız sevinirim 🙂
Burada problem acceleration’dan kaynaklı değil gibi geldi bana, joystick kullansaydınız da aynı şey olacaktı hissiyatına kapıldım. Yazdığınız bir kod karakterin yanlış bir şekilde platformun sağına soluna ışınlanmasına sebep oluyor olabilir mi? Veya karakterin Rigidbody’si kinematic ise, karakterin platform ile teması karakteri durdurmaz çünkü kinematic Rigidbody’ler fizik güçlerinden etkilenmezler.
Hocam yanıtınız için çok teşekkür ederim.Collider kaynaklı sorundu.Edge collider kullanıyordum.Box collider yapınca hata çözüldü.Anlamadığım collider’ın neden böyle bir şeye sebep olduğu
Sanırım aynı şeyi kendi başıma yaşayıp iyice derinine inmeden bu konuda sağlıklı bir çıkarımda bulunamayacağım ama sorunu çözebilmenize sevindim 😀
Cansınız hocam 🙂
Neyse hocam sanırım derdimi anlatamadım.Yine de çok teşekkürler.Seviliyorsunuz 🙂
Hocam update içinde kameranın y değerini oluşturduğum değişkene atadığım için y değeri arttıkca değişkenin değeri de artıyor.Yani kameranın y değeri asla değişkenden büyük olmuyor
degisken=kameraY; yerine if(kameraY>degisken) degisken=kameraY; yapmanızı öneriyorum.
Hocam merhaba.Ben kamera içinde bir script ve script içerisinde de float bir değişken belirledim ve bu değişken kameranın y değerine eşit olarak artıyor.Kamera aşağı indiğinde bu değişkenin azalmamasını ama yukarı kalktığında ise artmasını istiyorum.Böyle bir şey mümkün mü?Teşekkürler
Evet bir if koşulu ile, kameranın y değerinin değişkenden büyük olup olmadığına bakarsınız ve ancak büyük olduğu durumda değişkenin değerini değiştirirsiniz.
Hocam merhaba. Unity’de balon patlatma oyunu yapıyorum. Balonlar patladıkça scoremanager aracılığıyla skor artıyor ve ekranda yazıyor bu kısımda sorun yok. daha sonra balonların farklı yerlerde belirmesi için kod yazdım ve balonları prefab haline getirip hiyerarchy panelinden sildim fakat bu sefer balonları patlatınca skor artmıyor sadece balonlar yok oluyor. bununla ilgili çözüm bulamadım ne yapmam gerekiyor yardımcı olursanız sevinirim.
Eğer skor artması işlemini, balon prefab’ının Inspector’undaki bir değişkene veya UnityEvent’e sahnedeki ScoreManager’ı değer vererek yaptıysanız, bu sorunun olması normal. Çünkü prefab’ların değişkenlerine sahne objelerini maalesef değer olarak veremezsiniz. Bence ScoreManager’ı singleton yapın ve balon patlayınca balondaki bir fonksiyonu çalıştırın, o fonksiyon da ScoreManager.Instance vasıtasıyla skoru artırsın.
Selamun aleyküm hocam. Ben oyunuma Google ads ‘den reklam ekledim. Ama şöyle bir şey yaptım. Google ads’ de 2 adet uygulama oluşturdum. Ve bir tanesini oyunuma bağladım. İnceleme gerekli diyordu. Şimdi etkin diyor. Ama etkin olan uygulamanın istatistikleri oynamıyor. 2. uygulama da istatistikler oynuyor. Ama 2. uygulamamı etkinleştirmedim. İnceleme gerekli diyor hala. Sorum şu ben ilk uygulamamı oyunum ile etkinleştirmiştim ya onu pasifleştirip onun yerine pasif olanı nasıl etkinleştirebilirim? Anlatamadıysam farklı bir şekilde anlatabilirim isterseniz fotoğraf kullanarak.
Aleykümselam. Google Ads’deki uygulamayı oyununuza bağlamaktan kastınızın, o uygulamanın reklam id’lerini oyununuzda kullanmak olduğunu varsayıyorum. Bu durumda, kodunuzdaki reklam id’lerini istediğiniz uygulamanınkiler ile değiştirip oyuna güncelleme atmanız gerekiyor diye düşünüyorum.
Reklam ID ‘leri ile alakadar bir sıkıntım yok. Sıkıntım şu Google AdMob ‘da oluşturmuş olduğum 2 tane uygulamada da “İnceleme gerekli” yazıyordu. Ben de uygulamalardan istatistikleri göstermeyen uygulamaya girdim. Uygulama ayarları > Mağaza ayarları seçeneğinin yanında “Ekle” yazısı vardı. Bende oyunuma bu uygulamayı ekledim. Sonradan fark ettim aslında diğer uygulamam için yapmam lazımmış bunu. Bu durumda ben bu yaptığım işlemi geri alabiliyor muyum?
Geri alma gibi bir şansım yoksa reklamdan kazandığım parayı alabilecek miyim? Çünkü istatistikleri gösteren uygulama “İnceleme gerekli” diyor.
Arayüz üzerinden bunu değiştirmeye yarayan bir buton ben de görmedim. O değerin nasıl değişeceğini internette arattığımda, yeni bir uygulama oluşturup, onu doğru oyuna bağlayıp, onun reklam id’lerini kullanmayı öneriyorlar (akabinde önceki uygulamayı arayüzden gizlemeyi). Eğer iki uygulama aynı oyuna bağlanabiliyorsa, asıl bağlamanız gereken uygulamayı da oyununuza bağlayıp diğer uygulamanın bağlantısını görmezden gelin derim.
Anladım hocam çok teşekkür ederim. Bir de aynı oyuna 2 farklı uygulama bağlanmıyor denedim olmadı.
O zaman isterseniz “yanlış uygulama”nın reklam kimliklerini oyununuzda kullanmaya başlayın ya da AdMob teknik destek ekibine mail atıp yardımcı olabilecekler mi kontrol edin.
Anlamadım “yanlış uygulama’nın reklam kimliklerini oyununuzda kullanmaya başlayın” derken yanlış uygulamadan kastınızı anlamadım.
2 uygulamanız var, birisi oyunu bağladığınız ama aslında bağlamamanız gereken uygulama, öbürü oyunu bağlamadığınız ama aslında bağlamanız gereken uygulama. Bu işlemi geri alamadığınız için, yanlış uygulamadan kastım, “oyunu bağladığınız ama aslında bağlamamanız gereken uygulama”.
hee şimdi anladım hocam teşekkür ederim yardımlarınız için.
Hocam merhabalar sayenizde bir çok şeyi sıfırdan öğrendim öncelikle teşekkür etmek istedim.Game panelinde terrainin bi kısmının kaybolması geri gelmesi yüklenmemesi ilerledikçe geri yüklenmesi gibi bir sorunla karşılaştım ve bu sadece belli bölgede diyebilirim resim için link bıraktım.
o bölgedeki koyduğum objeleri binaları yolları vs.kaldırıp denedim ancak düzelmedi.Build alıp denedim mobildede aynı şekilde hatalar mevcut.Şimdiden teşekkür ederim
Hocam sorunumu çözdüm, haritanın o kısmını binaları vs. yapmadan önce occlusion culling olayını aktif etmiştim.Sorunla karşılaşacak arkadaşlar için yukarıdaki pencereden Window-rendering-occlusion culling kısmından clear yapmanız gerekiyor.
Selamun aleyküm hocam, bayramınız mübarek olsun 😀
Aleykümselam, teşekkür ederim sizin de mübarek olsun 🙂
Allah razı olsun hocam. :d
Selamun aleyküm hocam. Google Play gizlilik politikası URL’si istiyor. Bunun için ne yapmalıyım? Ben kullanıcılardan hiçbir veri istemiyorum oyunumda. Ama Google Ads kullanıyorum.
“free privacy policy generator for mobile game” şeklinde arama yapıp, ürettiğiniz gizlilik poliçesini web sitenizde paylaşabilirsiniz. Web siteniz yoksa, WordPress gibi servisler üzerinden ücretsiz web sitesi açabilirsiniz.
Tamamdır hocam teşekkür ederim.
Selamun aleyküm hocam, Unity’de sahnede her yer arka plan rengi olarak griye bürünmüş durumda. Ne yapabilirim?
Hierarchy veya Scene panelinin arama kutucuğunda bir şeyler yazıyor olabilir, orayı temizleyebilirsiniz. Aksi taktirde sorunun resmini görsem faydalı olacak gibi.
Hocam yeni bir scene oluşturduğum vakit yarısı gökyüzü misali mavi diğer yarısı gri oluyor ya ben de ise her yer gri ondan bahsediyorum.
Fotoğraf atmam gerekirse nasıl atabilirim?
Window-Rendering-Lighting Settings’te Skybox’un değeri kaybolmuş olabilir. Fotoğrafı istediğiniz bir siteye yükleyip linkini atabilirsiniz.
Tamamdır hocam skybox değerinden hallettim çok teşekkür ederim
Hocam unity de çalışırken artık yanlışlıkla bı komuta falan mı deydim bilmiyorum ama birden bazı alanlar aşırı parlamaya başladı bu neden olabilir sizce güneş değil yol olarak kullandığım cisimler parlamaya başladı
Bu sorun sadece Scene panelinde oluyorsa, yukarıdaki ampul ikonuna tıklamayı deneyin. Game panelinde de sorun oluyorsa, Window-Rendering-Lighting Settings’te herhangi bir değişiklik yapmış olabilir misiniz? Veya Directional Light’ı aç/kapa/klonla/düzenle gibi bir şey yapmış olabilir misiniz?
Selamun aleyküm hocam. Hayırlı Ramazanlar 🙂
Hocam, Google Ads hesabı oluşturuyor iken ülkeyi Türkiye seçince TRY cinsinden paranız hesabınıza aktarılacaktır diyor. Benim anlamadığım şu, dolar üzerinden diyelim 1 dolar kazandım bu bana güncel kur fiyatına göre 14 tl olarak mı gelecek? Nasıl olacak?
Aleykümselam, hayırlı ramazanlar 🌙 Bence dediğiniz gibi işler ama kesin bir bilgim yok.
anladım hocam teşekkür ederim
Merhabalar, reskin yapmak istediğim bir oyun var unityde png veya jpeg dosyalarını adını değiştirmeden kendi yaptığım dosya ile değiştirirsem bir sıkıntı çıkarmı? Tekrar Kodlama veya herhangi bir işlem yapmak gerekir mi?
Dosyanın üzerine yazarsanız ve sizin yaptığınız reskin, orijinal görsel ile benzer özelliklere sahip ise (aynı aspect ratio vs.), tekrar bir şey yapmanız gerekmemeli.
Çok teşekkürler saolun sitede çok yararlı bilgiler mevcut bu arada teşekkürler 🙂
Sitenizi yeni keşfettim ve gerçekten elinize sağlık çok güzel bilgiler vermişsiniz. Umarım burada olmaya devam edersiniz. ❤ Oyunlarada save/load sistemi ile ilgili bir makale ya da önerebileceğiniz bir yer var mı? Site içerisinde aradım ancak sonuç bulamadım.
İlginiz için teşekkür ederim 😀 Basit ve güvenliği önemli olmayan değerleri kaydetmek için PlayerPrefs ve gerekirse JsonUtility kullanabilirsiniz. Daha karmaşık şeyler için BinaryFormatter kullanabilir veya hazır bir asset kullanabilirsiniz; örneğin Easy Save bu konudaki en popüler ama pahalı asset’lerden birisi. Ücretsiz alternatifler aramak için, “unity save system github” şeklinde arama da yapabilirsiniz.
https://forum.unity.com/threads/solved-unity-offscreen-target-indicator-little-problem.568027/
Bu kodu 2d çalıştırabililiyorum ama 3d yaptığım zaman ekranda düzgün çalışmıyor.
Oku 3d ye nasıl ayarlayabilirim.
Eğer script düzgün çalışmıyorsa, benim önerim onunla uğraşmak yerine “unity offscreen indicator” şeklinde arama yaparak karşınıza gelen hazır 3D alternatiflere yönelmeniz yönünde. Ücretsiz bir asset ve bazı video dersler gördüm ama ne kadar iyiler bilmiyorum.
2d düzgün çalışıyor ama 3d sahnede düzgün çalışmıyor ok istediğim gibi hareket etmiyor benim amacım hazır asset kullanmak değil kendim yapmak ve bunun mantığını anlamak istiyorum bunun hakkında makale varmıdır?
Bence bu sistemin mantığı şu şekilde olacak:
– Ok göstereceğiniz objenin ekran koordinatlarını WorldToScreenPoint ile alın
– Bu koordinatlar ekranın sınırları içerisinde ise ok göstermeyin
– Aksi taktirde, ekranın orta noktasından bu koordinatlara giden bir çizgi hayal edin ve bu çizginin ekranın hangi kenarına çarptığını bulun. Bu çizgi ya ekranın alt/üst (yatay) kenarına, ya da sol/sağ (dikey) kenarına çarpabilir. Hangisine çarptığını bulmak için, her iki kenarın da çizgiyle temas ettiği noktayı bulup, bu noktalardan hangisi ekranın orta noktasına daha yakınsa onu çarpma noktası kabul edebilirsiniz
– Bir önceki adımda bulduğunuz çarpma noktasından ekranın orta noktasına giden doğrunun açısını kullanarak, okun eğimini (yönünü) değiştirin
Attığınız kodda şu değişiklikleri yapmak belki sorununuzu çözebilir (denemedim):
Vector3 toPosition = Camera.main.WorldToScreenPoint(targetPosition);
Vector3 fromPosition = new Vector3(Screen.width / 2, Screen.height / 2, 0f);
Cevaplarınız için teşekkür ederim.
void PlusButtonOperation(int index)
{
Product product = DB.GetQuantity(index);
ProductItemUI ıtemUI = GetItemUI(index);
int[,] vs = new int[2, DB.ProductCount];
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < DB.ProductCount; j++)
{
product .quantity += 1;
vs[i, j] = product .quantity;
ıtemUI.PrintProductQuantity(vs[i, j]);
}
}
}
Artı tuşuna bastığınızda buradaki fonksiyon çalışır. Yapmak istediğim şey, butona basıldığında her ürünün kendi miktarının 10'ar 10 artmasını istiyorum. Lütfen bana yardım eder misiniz? Burada iki boyutlu dizi kullanarak yapmaya çalıştım. (Ürünler için database oluşturdum. Her ürünün index'i var.)
Ben burda niçin 2 boyutlu bir array kullandığınızı veya 10 artırmak yerine 1 artırdığınızı tam anlayamadım
Kod çalıştığında 10 tur döndüğü için 1 arttırdım. 2 boyutlu bir array kullanmanın sebebi ise 2 sütun oluşturup bir sütuna indexi diğer sütuna ise miktarı atamak istedim. Böylelikle her ürün birbirinden bağımsız olacaktı. Ama istediğimi elde edemedim. Yanlış yaptığımı biliyorum. 😢
Database’ler ile çok çalışmadığım için olayı çözemiyor olabilirim. Bu konuda gerçekten yardımcı olabileceğimi sanmıyorum 🙂
Anlıyorum. Yinede teşekkür ederim. 😊
Selamun aleyküm hocam,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SeviyelerYoneticisi : MonoBehaviour
{
public Button seviye1Button, seviye2Button, seviye3Button, seviye4Button, seviye5Button;
public static bool seviye1, seviye2, seviye3, seviye4, seviye5;
void Start()
{
seviye1 = true; // Seviye1 her daim açık olacak.
}
void Update()
{
if (seviye2 == true) // başka scriptten ulaşılacak. En aşağıda olduğu gibi.
{
seviye2Button.interactable = true;// seviye2 ‘yi açıyor. Aynıları diğerleri için de oluyor.
}
if (seviye3 == true)
{
seviye3Button.interactable = true;
}
if (seviye4 == true)
{
seviye4Button.interactable = true;
}
if (seviye5 == true)
{
seviye5Button.interactable = true;
}
}
}
SeviyelerYoneticisi.seviye2 = true;
Ama hocam, ben burada PlayerPrefsleri nasıl yerleştireceğimi bilemedim yapamadım hala. PlayerPrefs öğrendim ama hala olmadı. Bunun yüzünden oyun bitmedi bir türlü. Yardımcı olabilir misiniz?
Aleykümselam. Şu önceki mesajımda anlamadığınız kısım neresi:
“bool levelAcildiMi = PlayerPrefs.GetInt("Level2Unlock") > 0; ve PlayerPrefs.SetInt("Level2Unlock", 1); PlayerPrefs.Save(); kodlarını referans alabilirsiniz.”
bool değişkeni doğru ve yanlış döndürüyor. PlayerPrefs.SetInt(“Level2Unlock”, 1); yazarak Level2Unlock Key’i oluşturuyoruz ve sadece 0 ve 1 değerlerini aldığı için 1 değerini verdik. PlayerPrefs.Save(); yazarak set ettiğimiz PlayerPrefs’i kaydediyoruz.
PlayerPrefs.GetInt(“Level2Unlock”) > 0; yazarak Level2Unlock adındaki KEY 0’dan büyükse levelAcildiMi değişkeni true dönsün istiyoruz. Ben burada eksik veyahut yanlış birşey mi anladım?
Yazdıklarınız doğru. Level açıldığında SetInt(“…”,1) ile bunu pref’e kaydediyorsunuz, daha sonra “GetInt(“…”) > 0″ ile bunu kontrol ediyorsunuz. Bu kodları SeviyelerYoneticisi’nde kullanabilirsiniz.
hocam benim oyunumda 1. bölüm bitince bölüm seçiminin yapıldığı sahneye geçiliyor. Ardından karakter seçimine geçiş yapılıyor ondan sonra 2. bölüme geçiyor. Ben bu durumda karakter seçiminin yapıldığı scripte mi eklemeliyim bu durumda?
Bunun belli bir kuralı yok. Oyununuzun gereksinimlerine göre kendiniz karar vermeniz lazım. Bu kilit ekranı kodu olduğu için, ben olsam GetInt’li kodları bölüm seçimi sahnesine, SetInt’li kodları da yeni bölümün unlock olduğu yerlere eklerdim. İsterseniz internette kilitli leveller konusunda video ders bulmaya çalışın, belki kafanızda kalan noktalarda benden daha yardımcı olabilir.
Anladım hocam tamamdır teşekkür ederim.
Selamun aleyküm hocam, yaptığım proje de bölümden menüye gidildiğinde menü deki butonlar çalışmaz oluyorlar. Ne yapabilirim?
Aleykümselam. Sahnede Event System objesi olduğundan emin olun. Butonların On Click event’ine Inspector’dan değer verdiyseniz, çalışmadıkları anda Inspector’dan değerlerini kontrol edin. Koddan değer verdiyseniz, kodun alakalı kısımlarına Debug.Log’lar koyarak kodun nereye kadar çalıştığını kontrol edin.
Hocam baktım. Butonların kodlarının bulunduğu boş bir obje var. Onun içerisine butonları attım. Ama bu attığım butonlar menu sahnesinden ilerlediğim zaman kayboluyorlar. Missing (GameObject) yazıyor ondan dolayı tekrar menu sahnesine girdiğimde butonların çalışmadığını anladım da bu durumda ne yapabilirim?
On Click’te verdiğiniz fonksiyon Missing diyor diye anlıyorum. Bu durumda butonlar DontDestroyOnLoad olup, boş obje DontDestroyOnLoad olmuyor olabilir. Veya bir şekilde o boş objeyi yok ediyorsunuzdur.
hımm anladım hocam yardımınız teşekkür ederim.
Merhaba hocam öncelikle emekleriniz için teşekkürler. Bir sorum olacaktı.
Unity de yaptığım projemdeki texture boyutları çok yüksek olduğundan kamera dönüşlerinde donmalar ve takılmalar oluyor. Kalite ayarlarından texture kalitesini düşürünce düzeliyor ama ben kaliteyi bozmak istemiyorum. Acaba texture kalitesi yakından orjinal kalitede gösterip uzak detay seviyesinin otomatik kalitesinin düşmesini nasıl yapabilirim?
Texture’larınızda Generate Mipmaps açık değilse açmanızı öneririm.
Hocam bir soru daha soracaktım. Ben level kilit sistemi yaptım. Ama PlayerPrefs ile kaydetmenin yolunu bulamadım. Yardımcı olur musunuz?
bool levelAcildiMi = PlayerPrefs.GetInt("Level2Unlock") > 0; ve PlayerPrefs.SetInt("Level2Unlock", 1); PlayerPrefs.Save(); kodlarını referans alabilirsiniz.
teşekkür derim hocam
Selamun aleyküm hocam, ben Unity ‘de oyun yapmaya çalışırkene pc çok kasıyor ve beni çok yavaşlatıyor. Sizce pc’ de hangi parçaları yükseltirsem daha rahat çalışabilirim?
PC özellikleri;
İşlemci Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz 2.39 GHz
Takılı RAM 8,00 GB (kullanılabilir: 7,90 GB)
Sistem türü 64 bit işletim sistemi, x64 tabanlı işlemci
Aleykümselam. Eğer dizüstü bilgisayar kullanıyorsanız, Unity’nin tümleşik ekran kartınızı değil de (Intel HD 4000 vb.) harici ekran kartınızı (NVIDIA vb.) kullandığından emin olun. Aksi taktirde, sorun projenin kendisinde çok ciddi bir optimizasyon sorunu olması değilse ve hard diskinizde zaten yeterince boş yer varsa, o zaman ekran kartı ve RAM’i yükseltmek bence de işe yarayabilir. Hard diskinizi de HDD’den SSD’e geçirmek faydalı olabilir.
dizüstü pc var bende, harici ekran kartım yok pc de. sadece Intel var. Unity birkaç kez GPU hatası vermişti. Ciddi optimizasyon sorunundan dolayı GPU hatası mı alıyorum yoksa. Hard diskte yeterince yer var. pc de SSD ‘de var. Yine de Ekran kartı ve RAM ‘i yükseltmem bu durumda yine de yeterli olur mu sizce.
Yükseltirseniz ve sonra işe yaramazsa diye ben bir şey diyemiyorum, bunun sorumluluğunu alamam. Profiler kullanarak oyunun niye takıldığına bakın önce bence.
anladım hocam tamam teşekkür ederim.
Selamın aleyküm hocam,oyunuma ödüllü reklam koymak istedim gerekli Googleads plugin dosyasını indirdim projeme import ettim fakat force resolve yaparken hatayla karşılaştım.Projemden pluginleri sildim ve tekrar denedim fakat bu sefer bu gerekli Google adds pluginlerini seçmeye çalışırken bazılarını seçemedim yani yanına tik koymaya çalışıyorum ama olmuyor.İnternette bakmadığım site kalmadı hocam sizi rahatsiz etmek zorunda kaldım 😦
Aleykümselam. Solunda tik yok derken, import ederken hangi dosyaların import edileceğini seçtiğiniz yeri kastediyorsanız, o solunda tik olmayan dosyalar zaten projede vardır demektir (o konumda veya başka bir konumda). Onları tikleyememenizin bir sıkıntı oluşturmaması lazım.
Selamun aleyküm hocam, projemin pc’de kaydedildiği yerden klasör halinde alsam başka bir proje açıp ona atsam herhangi bir zarar gelir mi? Projem şu anda IOS ‘ a uyarlandı. Android ‘e çevirmek çok fazla zaman kaybına yol açacağı için böyle bir şey yapmayı düşündüm de dedim acaba sıkıntı çıkabilir mi sizce?
Proje klasörünü kopyalayıp başka bir yere yapıştırın, akabinde Unity Hub’da Open butonu ile açın. Bence yeni bir proje açıp onun üzerine yapıştırmayın.
Anladım hocam, peki IOS ‘tan Android ‘e çevirmek için build settings’ i kullanmak çok zaman kaybına ol açıyor. Farklı bir yoldan projeyi Android’ e çevirebilir miyim? Ve anlamadığım nokta neden direk yeni bir proje üzerine yapıştırmamamı söylediğiniz?
Mevcut projenin üzerine yapıştırınca belki bir sıkıntı vs. olur diye dedim. Platformlar arası geçişi daha hızlandırmanın bir yöntemini bilmiyorum ama projeyi ilk kez açarken, Unity Hub’da hangi platform ile açacağınızı belirleyebiliyorsunuz. O sayede, projenin ilk açılışta önce iOS için hazırlanmasını bekleyip hemen akabinde Android için hazırlanmasını beklemeniz gerekmiyor. Unity Hub’da Android ile açmayı seçerseniz, sadece Android için hazırlanmasını bekliyorsunuz.
Hımm bu özelliği bilmiyordum teşşekkür ederim yardımlarınızdan dolayı hayırlı akşamlar 🙂
Rica ederim size de hayırlı akşamlar ^^
Merhaba hocam bir sorum olacaktı ben bir projeyi açar açmaz build ve key dosyası aldım yani projede hiç birsey yokken.Şimdi oyunumu bitirdim fakat ne yapacağımı bilmiyorum yeni bir build ve key dosyası almalı mıyım yoksa key dosyası kalsın eski buildin üzerine yeni bir build alabiliyorsam almalı mıyım ne yapacağım bilemiyorum.
Projenizi Google Play vb. herhangi bir store’a atana kadar fark etmez. Attıktan sonra, hep aynı key’i kullanmanız lazım.
Eyvallah hocam canınız
Hocam merhabalar bundan birkaç hafta önce buraya yazdığım bir sorunla tekrar karşılaştım.Hocam 5 tane butonum var ve hepsine aynı kod dosyasına atadım.Hepsinin buton scriptide aynı kod dosyasında.Örnek olarak iki tane butonun scriptini yazıyorum.
using TMPro;
int para =100;
TextMeshProUGUI para_txt;
public void evinsabir()
{
İnt para -=20;
para_txt.text=para.ToString();
}
public void evinsaiki()
{
İnt para -=30;
para_txt.text=para.ToString();
}
private void start()
{
para_txt=GameObjectFind(“Canvas/birinciev”).GetComponent()
}
Hocam bu iki butona sırası ile tıkladığımda paramın 50 olması gerekirken ilk butona tıkladığımda 80 ikinci butona tıkladïğımda param 70 oluyor yani 80 den 30 eksilecegine 100den 30eksiliyor umarım anlatabilmişimdir. yardımcı olursanız çok sevinirim.
“int para -=20;” kodunuzun esasen “para -=20;” olduğunu varsayarsak, ben attığınız kodda halen bir sorun görmüyorum. Bu scripti her butona ayrı ayrı component olarak verdiyseniz ancak o zaman sıkıntı çıkar, bunun için de scripti sadece ama sadece tek bir objeye component olarak vermelisiniz. Ya da para’yı static yapabilirsiniz ama bu ekstra sorunlara yol açar mı kontrol etmeniz lazım.
Uykusuzluktan hocam:)
public static int para =100; başka bir kod dosyasına attım lazım olduğunda da
koddosyasininadi.para-=50;
Yazarak sorunu çözdüm
Teşekkürler
Selamun aleyküm hocam, bilgi ve tecrübelerinize dayanarak bir soru sormak istiyorum. Yapmak istediğim bir oyunu 2 farklı projede yapmayı düşünüyorum. Ama şu şekilde bir tanesini Android uyumlu, diğerini IOS uyumlu yapmayı düşünüyorum. Her iki projede de aynı anda ilerlemeyi düşünüyorum. Bunu düşünmemin sebebi şu anda üzerinde uğraştığım proje android uyumlu idi IOS ‘a çevirdim 5 saatimi aldı. Ondan dolayı en baştan biri IOS diğeri Android ‘e hazır olacak şekilde en baştan hazırlayıp sonra projeye başlayayım diyorum. Sizce nasıl olur?
Projeyi iOS’a çevirmeniz niçin 5 saat sürmüştü?
Valla hocam 3 gün önce size de “unity de Build Settings ‘de IOS ‘a hazır hale getirmek için switch platform’a basarak hazır hale getiriliyor ya bu hazır hale getirilme aşamasında ki süre oyunun boyutunun fazlalığına göre artış gösterir mi? sorusunu bunun için sormuştum. Oun boyutunun fazlalığı süreyi arttırır demiştiniz. Oyun 6 GB yer kaplıyor pc ‘de birde.
Anladım o anlamda çevirmekten bahsediyorsunuz. Tabi size kalmış ama ben kendim asla 2 proje açmazdım. Çok sık platform geçişi yapacaksam, şu tarz bir asset kullanmayı düşünebilirdim: https://assetstore.unity.com/packages/tools/utilities/turbo-switch-pro-60040
Hım anladım hocam, peki bu assetin benzeri işlevi gören ücretsiz bir asset var mı bildiğniz?
Maalesef araştırma yapmadım. “unity faster platform switch” şeklinde arama yapıp ne var ne yok kontrol edebilirsiniz.
Tamam hocam Allah razı olsun. Çok yardımcı oldunuz. 🙂
Estağfurullah, sizden de 🙂
Amin, cümlemizden inşallah 🙂
Sleamun aleküm hocam, samplescene hatası alıyorum. 0234, 0246 hatalarını alıyorum. İstemeden Sample Scene dosyasından bir şey sildim. bu hatayı aldım. Nasıl bir yol izlemeliyim?
0234 –> Assets\SampleScenes\Scripts\ParticleSceneControls.cs(6,27): error CS0234: The type or namespace name ‘Effects’ does not exist in the namespace ‘UnityStandardAssets’ (are you missing an assembly reference?)
0246 –> Assets\SampleScenes\Scripts\ParticleSceneControls.cs(40,17): error CS0246: The type or namespace name ‘ParticleSystemMultiplier’ could not be found (are you missing a using directive or an assembly reference?)
Yeni bir proje oluşturup onun SampleScene dosyalarını bu projeye kopyalamayı deneyebilirsiniz. SampleScene ile işiniz yoksa, onunla bağlantılı tüm assetleri silin derim.
tamam hocam sağolun
Selamun aleykküm hocam, kod ile unity de labirent duvarı nasıl oluşturabilirim?
Aleykümselam. Bunun için “unity maze generation” şeklinde arama yapabilirsiniz, benim aklımda olan bir yöntem maalesef yok.
Anladım teşekkür ederim.
Selamun aleküm hocam, unity de Build Settings ‘de IOS ‘a hazır hale getirmek için switch platform’a basarak hazır hale getiriliyor ya bu hazır hale getirilme aşamasında ki süre oyunun boyutunun fazlalığına göre artış gösterir mi?
Evet maalesef gösteriyor.
Anladim tamam hocam tesekkur ederim
Merhabalar hocam bir sorum olacaktı assetstore dan aldığım bir paketi projeme import ettiğim zaman mesela paket 500mb fakat ben 500mb lik paketin 10mb lik kısmını kullandım benim oyunumun boyutu 500mb mi olur 10mb mi?
Bu 500 MB Resources klasörü içerisinde değilse 10 MB olur.
Hocam resources klasörü nedir ne için kullanılır affedin 🙂
İsmi Resources olan klasörler, içindeki asset’ler kullanılmasa bile oyuna dahil olur. Resources.Load için kullanılır.
Selamun aleyküm hocam, unity de scene ‘ de iken etrafa rahatça bakammıyorum. Böyle tek bir noktadan etrafa bakmaya çalışıyorum ama anlam veremediğim bir halde? Normal şekilde kullanmaya nasıl geçiş sağlayabilirim?
Hocam o sıkıntıyı çözdüm ama unity remote kullanarak telefonda oyunu test ettmek istediğimde telefonda çözünürliğü çok düşük oluyor ama pc de hala normal çözünürlükte ne yapabilirim?
Aleykümselam. Edit-Project Settings-Editor’deki Compression ve Resolution ayarlarını değiştirmeyi deneyebilirsiniz.
Tamamdir hocam tesekkur ederim
Hayırlı akşamlar hocam, IEnumerator, if içerisinde kullanılabiliyor mu bende StartCoroutine yazınca IEnumerator’a ulaşamıyor da ?
Yazdığınız sıkıntılı kodu görebilir miyim?
public void Yildizlar()
{
if (toplamaManager1.goldSkor > 10 && toplamaManager1.goldSkor <= 40)
{
IEnumerator Yildiz()
{
yield return new WaitForSeconds(1f);
solYildiz.SetActive(true);
sagYildiz.SetActive(false);
ortaYildiz.SetActive(false);
}
}
Hocam oyuncu bölümü bitirince karşısına sonuç paneli çıkıyor o anda kazandığı yıldızları hemen değil de mesela 1 saniye bekleyerek görsün istiyorum ama bu IEnumerator fonksiyonunu çalıştıramıyorum. StartCoroutine (Yildiz()); yazdığımda adı geçerli bağlam da yok diyor.
Yaptığınız şey local function olarak geçiyor (fonksiyon içinde fonksiyon tanımlamak) ama eski C# sürümlerinde desteklenmiyor. Bence Yildiz fonksiyonunu Yildizlar’ın içinden çıkarıp dışarıda tanımlayın ve ondan sonra tekrar StartCoroutine ile çağırmayı deneyin.
Merhaba hocam play store oyun yüklemek istiyorum fakat bilmediğim birkaç husus var.Oyun yüklediğimizde gelir elde edebilmek için şirket kurmamız gerekiyor mu ? İkinci olarak da play store da vergi olayı nasıl oluyor kendimizin gidip vergi vermesine gerek var mı yoksa play store vermemiz gereken vergiyi kendisi devlete veriyor mu? Bu soruları cevaplarsanız çok sevinirim hocam hayırlı günler.
Avukat olmadığım için, bu dediklerime kesin bilgi gözüyle bakmayın. AdMob reklamları veya IAP/paralı oyun satışlarından gelir elde etmeniz için şirket kurmanız veya elle vergi vermeniz gerekmiyor. Para Google tarafından hesabınıza aktarılırken, vergi düşülüyor. Bunlar en azından benim şimdiye kadar aldığım izlenimler.
Sağolun hocam teşekkürler
Hocam merhabalar. Unity de bir oyun geliştiriyorum fakat bir sorunum var.Oyunda belli bir param var ve üniversite, ev inşa ettiğimde param eksiliyor fakat şöyle bir sorunum var. Üniversite inşaa ettiğimde 1000 tl olan param 500 e düşüyor fakat sonrasında ev inşa ettiğimde 500 tl den 300 tlye düşmesi gerken param 1000tl den (başlangıç parasından) 800 tl ye düşüyor. Umarım anlatabilmişimdir hocam cevap verebilirseniz çok sevinirim.
Kodunuzu görmeden yardımcı olamayacağım bir sorun ama kodunuz uzunsa da, tamamını maalesef kontrol edemem. İsterseniz kodunuzun ilgili kısımlarından birkaç satırlık yerler paylaşabilirsiniz.
int para =1000;
TextMeshProUGUI para_txt;
private void start()
{
para_txt=GameObejctFind(“Canvas/para_txt”).GetComponent<TextMeshProUGUI>();
}
public void evinsabutonu(){
if(para>=200)
{
para-=200;
para_txt.text=para.ToString();
}
}
public void karakolbutonu(){
if(para>=500)
{
para-=500;
para_txt.text=para.ToString()
}
}
Hocam kodlar bu şekilde bir kısmını attım.
Bu component’ten sadece 1 tane mi var yoksa her eve bu component’i verdiniz mi?
Hocam bu component’ten bir tane var
Bu sorun oyundan çıkıp girince veya sahneler arası geçiş yaptıktan sonra oluyorsa, parayı kaydetmiyorsunuzdur belki. Aksi taktirde kodunuzda bir sıkıntı görmüyorum.
İlgilendiğiniz için çok teşekkür ederim hocam.Kolay gelsin.
Merhaba hocam. Oyunumun apk’sını telefona yükledikten sonra sadece ilk açıldığında , level başlangıcında aşırı kasma oluyor. Bu kasma daha sonra gidiyor ve hiç olmuyor. Oyunu kapattım açsam dahi o kasma ile karşılaşmıyorum. Bu olay sadece ilk yüklemenin akabinde açılan ilk oyunda oluyor.
Hocam , bu sorunun çözümü için tavsiyeleriniz var mı?
Aklıma maalesef bir şey gelmiyor. İsterseniz Profiler kullanarak neler olup bitiyor kontrol edin: https://yasirkula.com/2020/03/26/unity-profiler-kullanimi/
Teşekkürler hocam yine de. Kolay gelsin.
Hocam merhabalar. Diyelim ki 100 indekse sahip bir liste alanım var. Kullanıcıdan 100 tane kelime girmesini isteyeceğim. Ardından girilen kelimeleri kaydetmek istiyorum PlayerPrefs.SetString ile.
Ama her kelime için nasıl PlayerPrefs.Set oluşturacağım. Yardımcı olabilir misiniz?
JsonUtility kullanabilirsiniz. Örneğin dersimdeki JSONTest sınıfında, bir array’in değeri json’a çevrilmekte.
Merhaba ben animasyon optimizasyonu hakkinda fikir almaya geldim. Oyunumda 300tane küpe animasyon verdim. Animasyonlarda örnegin aynı anda 150 tanesi yukarı cıkıyor sonra diger 150 tanesi basliyor. Haliyle mobil oyunda illaki kasma yaratiyor. Animation controller yerine normal animation yapip ekledim. Gene de buyuk bir etki yaratmadı. Surekli calisacaklarindan pool olusturup render almamasınıda saglayamiyorum.Animasyonu çalışmayanlarda render oluyor. Bu tarz aynı objeler ve ayni animasyonlar icin bilindik bir yöntem var mı?
Öncelikle animasyonları kapatıp sıkıntının animasyonlardan olduğundan emin olun. Eğer öyleyse, animasyonu DOTween ile vermeyi deneyebilirsiniz. Benim anladığım kadarıyla, animasyonunuz basit bir yukarı aşağı hareketten oluşuyor ve bu hareketi DOTween ile kolayca verebilirsiniz.
Evet animasyonum sprite değiştirme ve sadece yukarı gibi basit bir animasyon.Animasyon kullanmak yerine kodla da yapabilirim.Ama update de 300 tane hareket kodu animasyona göre daha yük bindirir diye düşünmüştüm. Bir de kodla deneyeyim o zaman. Teşekkürler
300 tane Update yerine, kodu ona göre ayarlayarak tek bir Update’te 300 animasyonu oynatabilirsiniz.
Hocam oyun içinde reklamlar için sadece Unity ads kullanıyorum. Gizlilik sözleşmesine buradaki 2 bağlantı yeterli olur mu
.Unity–>> https://unity3d.com/legal/privacy-policy
.Google Play hizmetleri –>> https://policies.google.com/privacy?hl=tr
Bu konuda cevap verebilecek yetkinliğe sahip değilim maalesef. Ben sadece 2 linkten oluşan bir privacy policy görmedim ama dediğim gibi doğru yöntem nedir bilmiyorum.
Gizlilik politikam uzun uzuna yazıldı zaten. Daha önce admob kullanıyordum.
.Admob–>> https://support.google.com/admob/answer/6128543?hl=en
şeklinde bağlantı veriyordum.
Admob hesabım kapandı. Unity Ads’e geçtim. Unity Ads içinde bağlantı verilmesi gerekiyorsa onu bulamadım ben.
Anladım. Unity Ads’in gizlilik poliçe linki attığınız link de olabilir bu link de olabilir, hangisi doğru emin değilim.
Hill Climb Racing oyunun rpm nasıl çalışır unity de bunu yapmaya çalışıyorum. Rpm yaptım ama hill climb racing gibi çalışmıyor. Bu konuda bilginiz var mı?
Araç fizikleri konusunda maalesef yardımcı olamam.
bayram elmadağı için bir cevap yazın Cevabı iptal et