oyun göründüğü gibi sol üsteki high score u oyuncu öldüğü zaman try again kısımndada yazdırmak isitoyrum fakat ne yaptıysam olmadı try again ekranından high score ve öldüğüm andaki score ulaşamıyorum bu birinci
< Bu mesaj bu kişi tarafından değiştirildi rocketraccoon -- 2 Aralık 2020; 21:50:29 > |
doodle jump benzeri oyun yazıyorum bi yerde tıkandım yardım edin lütfen
-
-
Kodlarını gösterirsen ve daha detaylı açıklarsan yardımcı olunabilir.
-
- sorunu çözdüm hocam
- sorunda ne kod yazacağımı bilmiyorum ekranına sağından girince solundan çıkmasını istiyorum sağından girince solundan çıkmasını istiyorum şuanda ekranın sağından çıktığımda devam ediyor ekranda gözükmüyor yere düşünce ölüyor solundanda aynı şekil hiç kod yazmadım bunun için
-
Ekranın en sağına ve en soluna olmak üzere 2 tane gameobject oluştur ve bunlara box collider 2D ver. Dikey olacak şekilde collideri yukarı doğru birazcık uzat ve is trigger işaretle. Soldaki objeye "Left", sağdaki objeye "Right" taglarını ver. Bu iki objeyi main cameranın atına childleri olacak şekilde at. Sonra playerımızın kod scriptini aç ve şunları ekle.
public GameObject leftObj, rightObj; private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Left")) { this.transform.position = new Vector3 (rightObj.gameObject.transform.position.x-1, this.transform.position.y, this.transform.position.z); } if (other.CompareTag("Right")) { this.transform.position = new Vector3 (leftObj.gameObject.transform.position.x+1, this.transform.position.y, this.transform.position.z); } }Kod
Yığını:Player'ın scriptinde leftObj ile rightObj'yi göstertmeyi unutma yoksa çalışmaz. Ayrıca objelerin box colliderlerini ince yap ve ekranın sağına ve soluna çok yaklaştırma. Arada 1 birimlik mesafe bırak ki karakter sağdan sola veya soldan sağa ışınlanınca tekrar etkileşime geçip tekrar eski pozisyonuna ışınlanmasın. Ek olarak farklı en boy oranı olan cihazlarda ışınlanma yerleri de farklı olmalı. Onun için de playerın scriptine şu yöntemi ekleyebiliriz:
private void Start() { if (Camera.main.aspect >= 0.75 && Camera.main.aspect <= 0.76) { leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x - 2, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z); rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x + 2, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z); Debug.Log("ipad"); } if (Camera.main.aspect >= 0.66 && Camera.main.aspect <= 0.67) { leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x - 1, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z); rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x + 1, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z); Debug.Log("iphone 4S"); } if (Camera.main.aspect >= 0.56 && Camera.main.aspect <= 0.57) { leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z); rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z); Debug.Log("iphone 6S"); } if (Camera.main.aspect >= 0.46 && Camera.main.aspect <= 0.47) { leftObj.gameObject.transform.position = new Vector3 (leftObj.gameObject.transform.position.x +1, leftObj.gameObject.transform.position.y, leftObj.gameObject.transform.position.z); rightObj.gameObject.transform.position = new Vector3 (rightObj.gameObject.transform.position.x - 1, rightObj.gameObject.transform.position.y, rightObj.gameObject.transform.position.z); Debug.Log("iphone X"); } }Kod
Yığını:Burada mesela ipad tabletlerin en boy oranı genelde 4:3. Yani tableti dikey tuttuğumuzda sola ve sağa oluşturduğumuz objeler ekranın en solunda veya en sağında değil de biraz daha iç kısımda kalırlar. Bu yöntemle ipadlerde soldaki objemizi 2 birim sola, sağdakini ise 2 birim sağa yolladık.
< Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 3 Aralık 2020; 20:16:47 >
-
Hocam süpersin -
ilk kod yığınını yaptım işe yarıyor ama player oyun başında solda yapışık başlıyor oynarken kendi kendine ne tarafa yakınsa o tarafa ışınlanıyor neden olabilir hocam
-
Colliderleri iyi ayarlamamış olabilir misin? Hemen tetikleniyodur.
-
bu şekilde ayarladım
< Bu mesaj bu kişi tarafından değiştirildi rocketraccoon -- 3 Aralık 2020; 12:13:10 > -
Belki en boy oranı için verdiğim kod oyunu başlattığın gibi objeleri ortaya yaklaştırmıştır. Onu kontrol et. Birde 1080x1920 portrait değil de orayı aspect ratio 9:16 olarak kullan. Diğer en boy oranları ise çentikli cihazlarım 90:195, ipad ise 3:4.
Ayrıca playerın colliderini de düzgün ayarla. Player ile tam boy ya da biraz daha küçük capsule collider 2d kullanabilirsin.
< Bu mesaj bu kişi tarafından değiştirildi 1ht1baron -- 3 Aralık 2020; 14:8:6 >
< Bu ileti mobil sürüm kullanılarak atıldı > -
Bu işi colliderlarla yapıyorsanız canvasları ve farklı cihazlarda çözünürlük ayarlamayı çok iyi yapmak gerek.Yoksa colliderların konumu farklı cihazlarda en boy oranına göre değişşebilir ve oyuncu objenin yok olduğunu falan görebilir. OnBecameInvisible fonksiyonu ile yapmalısınız.Bu fonksiyonda cameranın objeyi görüp görmediği hesaplanır.
-
telefon ekranları için verdiğin kod yığınını atınca oyun başlamıyor ekranda fix ...bla bla hata veriyor vsc içinde hata bulmuyor ama oyuna başlamıyor sadece
player kapsül kolaydır 2d kullanıyorum
-
hemen deniyorum hocam
-
yardımcı olurmusunuz yapmadım hangi kodalrı yazaman gerekli
-
Tek istedigin bazi platform oyunlarindaki gibi sagdan kaybolunca soldan ,soldan kaybolunca sagdan cikmasi karakteri kontrolune gerek yok onu yaptin değil mi?
< Bu ileti mobil sürüm kullanılarak atıldı > -
Oyun tam haraket falan indirdiğim asseste hazır vardı tek sağdan girince soldan çıkmak soldan girince sağdan çıkmak yukarda arkadaşın verdiği kod çalışıyor ama oyundayken kendi kendine durduk yere biyerlere ışınlanıyor -
Mesela RightLeftinVisible isminde bir c script oluştur bu yazdığım kodu yapıştır ve kaybolacak karaktere at istediğin şey olur.Buradaki 0.5 değeri transform.y -4 değeri transform.z.Bunlar önemli değil ben kodu yazarken basit bir küp üzerinde yazdım ve küpün konumu böyleydi.Bunları kendine göre ayarla.Mesela senin karakterin bazen zıplayacaksa oraya 0.5 değil de karakterin pozisyon y'sini gir.
using UnityEngine;
public class RightLeftinVisible : MonoBehaviour
{
void OnBecameInvisible()
{
transform.position = new Vector3(transform.position.x-transform.position.x-transform.position.x,0.5f,-4);
}
}
-
hocam kod çalışıyor evet ama hep aynı y değerinde çalışıyor beni karakter hiç durmadan yukarı zıplıyor böylece değer hiç durmadan değişiyor onu nasıl yapıcam ?
-
transform.position = new Vector3(transform.position.x-transform.position.x-transform.position.x,transform.position.y,-4);
-
sağolun hocam x değeriyle oynayına düzeldi şimdi doğru değri bulmaya çalışyıorum kolay gelsin
-
quote:
Orijinalden alıntı: rocketraccoontelefon ekranları için verdiğin kod yığınını atınca oyun başlamıyor ekranda fix ...bla bla hata veriyor vsc içinde hata bulmuyor ama oyuna başlamıyor sadece
player kapsül kolaydır 2d kullanıyorum
Hatanın nedeni ; koymayı unutmuşum sonlarına. Düzelttim şimdi.
< Bu ileti mobil sürüm kullanılarak atıldı >
Benzer içerikler
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X