UNITY İle Android’e Uygulama Geliştirmek – 2 – Telefon Sensörünü Kullanmak

Yayınlandı: 22 Temmuz 2013 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde
Etiketler:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Tekrar merhaba,

Bu derste Android veya iOS için uygulama geliştirirken telefonun sensörünü nasıl kullanabileceğinizi göreceksiniz. Bu sefer ilk derse göre daha eğlenceli bir uygulama yapmaya çalışacağız, sensörle bir topu yönettiğimiz basit ama yüksek potansiyelli, geliştirmeye açık bir oyunun temellerini atacağız (bkz. Ballance oyunu). Dokunmatik ekranı kullanmayı anlattığım ilk derse gitmek için tıklayın: https://yasirkula.com/2013/07/17/unity-ile-androide-uygulama-gelistirmek-1-dokunmatik-ekran-entegrasyonu/

Derse başlamadan önce Unity için Android SDK‘yı kurmuş olmanız lazım. Kurmadıysanız sizi buraya alalım: https://yasirkula.com/2013/07/17/unity-android-sdk-kurulumu-resimli-anlatim/

Başlayalım o halde…

Telefonun sensörüyle ilgili işimize yarayabilecek sadece 2 komut var, bu yüzden Unity’de sensörü kullanmak dokunmatik ekranı kullanmaya göre daha kolay. İlk önce bu 2 koddan önemsiz olanını açıklamak istiyorum: “Input.deviceOrientation“. Bu değişken telefonun hangi pozisyonda tutulduğunu belirtiyor. Yani cihazın yere dik ve düzgün bir şekilde (HOME butonu aşağıda olacak şekilde) mi (DeviceOrientation.Portrait), yere dik ama tepetaklak bir şekilde (HOME butonu yukarıda olacak şekilde) mi (DeviceOrientation.PortraitUpsideDown), yere dik ve sola yatırılmış bir şekilde mi (DeviceOrientation.LandscapeLeft), yere dik ve sağa yatırılmış bir şekilde mi (DeviceOrientation.LandscapeRight), yere paralel ve ekranı yukarı bakacak şekilde mi (DeviceOrientation.FaceUp) yoksa yere paralel ve ekranı aşağı bakacak şekilde mi (DeviceOrientation.FaceDown) tutulduğunu depolar. Eğer ki cihaz abuk subuk bir eğimle tutuluyorsa o zaman bu değişken “DeviceOrientation.Unknown” değerini alır.

Şimdi gelelim işimize yarayacak olan değişkene, yani direkt telefonun sensörünün döndürdüğü değerleri okumaya yarayan değişkene: “Input.acceleration“. Bu değişken bir Vector3 döndürür. Bu Vector3’ün x, y ve z değerleri -1.0 ile 1.0 arasında birer float‘tır. Bu değişken Screen.orientation ile işbirliği içinde çalışır. Normalde Screen.orientation‘ın değeri ScreenOrientation.Portrait‘tir. Ancak eğer oyunu daha geniş ekranda oynatmak istiyorsanız yatay ekranda çalışmak üzere (ScreenOrientation.LandscapeLeft) programlamanız mantıklıdır. Her iki durumda da, eğer ki cihazınız yere dik ve ekranı size bakacak şekilde duruyorsa Input.acceleration değişkeninin x değeri cihazı sağa sola yatırarak, z değeri ise cihazı ileri geri yatırarak değişir. Yok eğer cihaz yere paralel ve ekranı yukarı bakacak şekilde duruyorsa bu sefer Input.acceleration değişkeninin x değeri yine cihazı sağa sola yatırarak değişirken y değeri cihazı aşağı yukarı yatırarak değişir. Diğer pozisyonlardan bahsetmiyorum çünkü normal bir oyunda ekran bu bahsettiğim 2 durumdan birindeyken oyun oynanır. Anlayacağınız Screen.orientation‘a bakmaksızın eğer cihazınız normal bir şekilde duruyorsa Input.acceleration değişkeninin x değeri hep cihazı sağa sola yatırmakla alakalı iken cihazın pozisyonuna bağlı olarak y ve z değeri de cihazı ileri geri ya da yukarı aşağı oynatarak değişir. Olayı en iyi şekilde anlamak için yapmanız gereken şey, bu sensör değerlerini bizzat test etmek. Bunun için yeni bir proje açın ve Main Camera‘ya şu scripti atın (ardından Android için Build edip bol bol kurcalayın cihazı):

function OnGUI()
{
  var yazi : String = "Input.acceleration: " + Input.acceleration;
  yazi += "\nInput.deviceOrientation: " + Input.deviceOrientation;
  yazi += "\nScreen.orientation: " + Screen.orientation;
  GUI.Label( new Rect( 0, 0, Screen.width, Screen.height ), yazi );
  if( GUI.Button( new Rect( 400, 0, 100, 50 ), "Orientation" ) )
  {
    if( Screen.orientation == ScreenOrientation.Portrait )
      Screen.orientation = ScreenOrientation.LandscapeLeft;
    else
      Screen.orientation = ScreenOrientation.Portrait;
  }
}

Artık hazırsanız oyunumuzu yapmaya başlayabiliriz!

Yeni açtığınız projede yeni bir Sphere GameObject oluşturun. Buna Rigidbody ekleyin ve “Drag” değerini 3 yapın (Hava sürtünmesi olması ve topun kendiliğinden durabilmesi için). Bu obje topumuz olacak. Ardından topun üstünde yürümesi için bir Cube GameObject oluşturup bunu büyültüp topun aşağısına zemin niyetine koyun. Buna ek olarak birkaç Cube GameObject daha oluşturun ve bunları sahada rastgele konumlandırın. Bu küp objeler topumuz için birer engel olacaklar. Kendileri için hiçbir kod gerekmiyor, Collider‘ları olması yeterli. Son olarak sahneye bir de Directional Light ekleyin. Benim hazırladığım sahadan bir görüntü:

1

Şimdi kamerayı ayarlayalım. Topun ve kameranın rotationlarını resetleyin. Ardından kamerayı, topun z ekseninde biraz gerisinde ve y ekseninde biraz yukarısında olacak şekilde konumlandırın. Dilerseniz kamerayı aşağı yönde biraz döndürebilirsiniz. Şimdi bir Empty GameObject oluşturup bunu top objesinin bir child objesi yapıp Transform‘unu resetleyin. Ardından kamerayı da bu Empty GameObject‘in child objesi yapın. Son olarak da Empty GameObject‘e aşağıdaki ufak scripti yazın:

function Update () {
  transform.eulerAngles = Vector3.zero;
}

Niçin böyle yaptık? Çünkü top hareket ettiğinde kendi etrafında dönecek ve direkt kamerayı topun child objesi yapsaydık o da topla beraber dönecekti. Ama şimdi Empty GameObject sayesinde kamera topu takip ediyor ama topla birlikte dönmüyor çünkü Empty GameObject‘in eğimini sürekli (0,0,0)‘a ayarlıyoruz. (Eğer dilerseniz sahnedeki objelere renkli basit materyaller ekleyerek sahneyi güzelleştirebilirsiniz.)

Artık tek yapmamız gereken topa hareket etmesini öğretmek için bir script yazmak. Bunun için yeni bir Javascript oluşturup bunu top objesine atayın ve içine şunu yazın:

function FixedUpdate()
{
  rigidbody.AddForce( Vector3( Input.GetAxis( "Horizontal" ), 0, Input.GetAxis( "Vertical" ) ) * 10 );
  rigidbody.AddForce( Vector3( Input.acceleration.x, 0, -Input.acceleration.z ) * 30 );
}

Bu kod sayesinde oyunu hem PC’de hem de Android’de test edebilirsiniz. Gördüğünüz üzere topu sola hareket ettirmek için cihazı sola yatırıp Input.acceleration.x‘ini negatif bir değer yapmalı ya da ileri hareket ettirmek için cihazı ileri yatırıp Input.acceleration.z değerini negatif (haliyle –Input.acceleration.z değerini pozitif) yapmalıyız. Fark ettiğiniz gibi cihazı ileri geri yatırarak Input.acceleration’ın z değeriyle oynuyoruz, yani oyunumuzun düzgün oynanabilmesi için cihazın kusursuz bir şekilde yere dik ve ekranı bize bakacak şekilde durması gerekiyor. Bu da iyi bir şey değil, hem de hiç. Kullanıcı belki de oyunu ekran 45 derece açıyla yukarı bakıyorken oynamak isteyecek. Bu sorunu çözmek için hemen şimdi script’i biraz daha geliştireceğiz. Ama ondan önce dilerseniz oyunu PC’de ve Android cihazınızda test edin. İşiniz bitince kodu şununla değiştirin:

var ilkPozisyon : Vector3;

function Start()
{
  ilkPozisyon = Input.acceleration;
  Screen.orientation = ScreenOrientation.LandscapeLeft; /* Oyunu geniş ekran oynamak için */
}

function FixedUpdate()
{
  rigidbody.AddForce( Vector3( Input.GetAxis( "Horizontal" ), 0, Input.GetAxis( "Vertical" ) ) * 10 );
  rigidbody.AddForce( Vector3( Input.acceleration.x - ilkPozisyon.x, 0, -Input.acceleration.z + ilkPozisyon.z ) * 30 );
}

Gördüğünüz gibi çok basit bir hamleyle sorunu çözdük: oyun başlarken cihazın sensör değerlerini bir değişkene kopyaladık ve daha sonra FixedUpdate()‘te yaptığımız sensöre dayalı işlemi (0,0,0)‘ı referans alarak değil de bu değişkenin değerini referans alarak yaptık. Yalnız eğer Unity 4.2’den eski bir versiyon kullanıyorsanız sıkıntı yaşamanız mümkün çünkü bu versiyonlarda bir bugdan dolayı oyun Android’de 5 saniye gecikmeli olarak açılıyor. Bu esnada ekran siyah oluyor ancak arkaplanda oyun oynamakta oluyor. Bunu çözmek için yapmanız gereken şey çok basit: Unity sürümünüzü güncelleyin.

Böylece bu dersin de sonuna geldik. Elimizde çok basit bir oyunun prototipi bulunmakta ve biraz hayal gücüyle çok güzel bir oyun ortaya çıkabilir. Kendinizi geliştirmek amacıyla oyuna parmak sürükleme desteği de sunmaya çalışın. Böylece topu ekranda parmağımızı sürükleyerek de hareket ettirebilelim.

Umarım faydalı olmuştur, başka derslerde görüşmek üzere!

yorum
  1. erdem dedi ki:

    ty GameObject’in child objesi yapın. child objesi nasıl olcak onu yapamadım

  2. RO dedi ki:

    Teşekkürler, bi “donate” butonu koy da kahven benden olsun 🙂

  3. alperen dedi ki:

    ben attımda sensör düzgün çalışmıyor yani geriye geliyor fakat ileriye gitmiyor ?

    • yasirkula dedi ki:

      Büyük olasılıkla telefonu tutuş pozisyonunuz hatalıdır. Telefon yere dik olmalı. Yere paralel tutarsanız malesef bahsettiğiniz durum gerçekleşir ve bu sorunun nasıl çözüleceğini şu an bilmiyorum.

  4. Unity3D dedi ki:

    Merhaba topu rigidbody.AddForce( (moveJoystick.position));
    komutu ile topu joystick ile kontrol edebiliyorum fakat kamerayı ikinci bir joystick ile döndürdügümde top ilk kamera pozisyonuna göre hareket ediyor bu sorunu nasıl çözebilirim

    • yasirkula dedi ki:

      Bir de şu kodu deneyin:

      var ilkPozisyon : Vector3;
      var kamera : Transform;
      var ileri : Vector3;
      var sag : Vector3;
       
      function Start()
      {
        ilkPozisyon = Input.acceleration;
        kamera = Camera.main.transform;
        Screen.orientation = ScreenOrientation.LandscapeLeft; /* Oyunu geniş ekran oynamak için */
      }
      
      function Update()
      {
        ileri = kamera.forward;
        sag = kamera.right;
        
        ileri.y = 0;
        sag.y = 0;
        
        ileri.Normalize();
        sag.Normalize();
      }
       
      function FixedUpdate()
      {
        rigidbody.AddForce( sag * moveJoystick.position.x );
        rigidbody.AddForce( ileri * moveJoystick.position.y );
      }
      
      • Unity3D dedi ki:

        mükemmel çalışıyor teşekkürler birde normalize metodunu bir iki cümleyle acıklayabilirmisiniz

      • yasirkula dedi ki:

        Normalize() bir vektörün uzunluğunu 1 yapmaya yarar. Hemen daha da açayım:

        Örneğin elimizde (1, 2, 2) vektörü olsun. Bu vektörün uzunluğu karekök( 1^2 + 2^2 + 2^2 ) = karekök(9) = 3. Vektöre Normalize() yaptığım zaman ise vektör artık (1/3, 2/3, 2/3) olacak ve uzunluğu da artık 1 olmuş olacak.

        Kodda ileri ve sag vektörlerine Normalize() yaptığım için bunların boyutu hep 1 olacak ve kamera açısına (özellikle yere doğru bakış açısına) bağlı olmaksızın topa hep aynı gücü uygulayabileceğiz.

      • Ekrem Kayıkçı dedi ki:

        slm yasir bey ben bu kodu direk topa atarsam topum artık telefon hareketi ile ileri geri sağ sola gidebilcek mi ??

      • yasirkula dedi ki:

        Joystickli satırları derste gösterdiğim gibi Input.acceleration ile değiştirmeniz lazım. Veya direkt derste paylaştığım bir kodu atın topa.

  5. Unity3D dedi ki:

    çok teşekkür ederim

    • Emre dedi ki:

      Hocam ben oyunu telefona attım ama top ile kamera aynı anda gitmiyor. Yani kamera hiç oynamıyor yerinden sadece topu hareket ettirebiliyorum. Nasıl ayarlayabilirim acaba bunu

      • yasirkula dedi ki:

        Sahnenizde şöyle bir hiyerarşi olmak zorunda:

        Bir tane top objeniz var. Bu top objesinin Empty GameObject bir child objesi var. Bu Empty GameObject’e şu script atanmış olmalı:

        function Update () {
          transform.eulerAngles = Vector3.zero;
        }
        

        Son olarak; bahsettiğimiz bu Empty GameObject’in de bir child objesi var ve bu child obje Main Camera’nın ta kendisi.

      • Emre dedi ki:

        Biraz geç cevap oldu ama dediklerinizin hepsini yaptım. Yine kamera sphere ile gelmiyor. Yani kamera sadece bir tarafı çekiyor

      • yasirkula dedi ki:

        O zaman Hierarch panelinin bir resmini çekip yollayın. Doğru yapıp yapmadığınızı göreyim. Doğru yapmışsanız o zaman benim önerebileceğim bir çözüm kalmamış olacak.

      • yasirkula dedi ki:

        Resimde görüldüğü üzere Empty GameObject’in Main Camera child objesi var, burası güzel. Ancak şu kısmı görmezden gelmişsiniz: “Bir tane top objeniz var. Bu top objesinin Empty GameObject bir child objesi var.”

        Hierarchy panelinde görüldüğü üzere Sphere objesinin, yani top objesinin bir child objesi yok. GameObject isimli objenizi sürükleyip Sphere’in, yani top objesinin child objesi yapın.

      • Emre dedi ki:

        http://i.hizliresim.com/eoWn6R.jpg dediğiniz gibi yaptım ama yine olmadı. Nerede hata yapıyorum acaba

      • yasirkula dedi ki:

        Bu sefer düzgün yapmışsınız. Ama bu halde bile top (sphere objesi) hareket ettiği halde Main Camera hiç ama hiç hareket etmiyorsa gerçekten hiç fikrim yok, herşey çok düzgün görünüyor.

      • Emre dedi ki:

        Aslında hareket ediyor ama çok saçma bir şekilde, yani topun hareketini yapıyor

      • Emre dedi ki:

        Şuan çözdüm olayı. 😀 GameObject’in transformunu sıfırlamayı unutmuşum 😀

  6. Murat dedi ki:

    Emeğiniz icin tesekkürler. Size bir şey sormak istiyorum 2d ekrandaki bazı objelerin hareket etmeleri bittiğinde yükseklik hesabi yapmak istiyorum buna göre skor belirleyeceğim bu işlem icin ne yapmalıyim.

    • yasirkula dedi ki:

      Burada önemli nokta objenin hareket etmesinin bittiğini nasıl anlayacağımız. Bu konuda ipucu vermemişsiniz, ben de eğer obje 1 saniye boyunca hareket etmezse hareketi bitmiş kabul ediyorum o yüzden. Şu kod işinize yarayabilir:

      private var sonHareket : float;
      private var sonKonum : Vector3;
      private var tr : Transform;
      public var zamanFarki : float = 1;
      
      function Start()
      {
      	tr = transform;
      	sonHareket = Time.time;
      	sonKonum = tr.position;
      }
      
      function Update()
      {
      	if( tr.position == sonKonum )
      	{
      		if( Time.time - sonHareket > zamanFarki )
      			Debug.Log( "Obje 1 saniyeden uzun süredir hareket etmiyor." );
      	}
      	else
      	{
      		sonHareket = Time.time;
      		sonKonum = tr.position;
      	}
      }
      
      • Murat dedi ki:

        Aslında tek bir obje değil de ekranda aynı objeden cok sayida olacak bunlardan en üsttekinin yerini bilmek istiyorum. Bu objeler yer çekimi ile hareket ediyor.

      • yasirkula dedi ki:

        Objelere tag verin o zaman “obje” diye. Sonra istediğiniz zaman GameObject[] objeler = GameObject.FindGameObjectsWithTag( “obje” ); diyerek bu objelere ulaşın ve aralarından y değeri en büyük olanı bulun.

  7. Emre B. dedi ki:

    Kodlar sağlam çalışıyor ama ben örnek veriyorum telefonu sola biraz eğdiğimde sabit hızla gitsin istiyorum. Bu kodlarla sürekli ivme kazanıyor. Bu sorunu nasıl aşabilirim

    • yasirkula dedi ki:

      Demek istediğiniz telefonu sola 1 derece kırsak da 90 derece kırsak da top aynı ivmeye mi sahip olsun yoksa topun bir maksimum hızı olsun ve o hızdan yukarıya çıkamayalım mı?

      • Emre B. dedi ki:

        Eğer telefonu sabit açıyla tutuyorsam ivme olamayacak. 1 derece eğiyorsam hızı 1, 15 derece eğiyorsam hızı 15 olacak.

      • yasirkula dedi ki:

        O halde rigidbody.velocity değerini değiştireceksiniz. Bu bir Vector3 ve objenin x,y,z eksenlerinde hızını temsil ediyor. Telefonun sağa-sola eğimine göre velocity.x’i, ileri-geri eğimine göre velocity.z’yi değiştireceksiniz.

  8. Furkan dedi ki:

    mesela ben bi araba yarışı yapmak istiyorum araba kendisi gidicek kullanıcı sadece sağa sola telefonu yatırcak yardımcı olabilirmisiniz ?

  9. Furkan dedi ki:

    Hocam bu dediklerinizden yolsa çıkarak birazdaha fazla araştırarak bişeler yaptım araba oyunu yanlız ben bunun bi türlü sağa vela sola dönerken arabanın dönmesini ayarlayamadım araba düz olarak ya sağa kayıyor ya sola kodum da şudur

    var ilkPozisyon : Vector3;

    function Start()
    {

    ilkPozisyon = Input.acceleration;
    Screen.orientation = ScreenOrientation.LandscapeLeft; /* Oyunu geniş ekran oynamak için */
    }

    function FixedUpdate()
    {{
    rigidbody.AddForce( Vector3( Input.GetAxis( “Horizontal” ), 0, Input.GetAxis( “Vertical” ) ) * 250 );
    rigidbody.AddForce( Vector3( Input.acceleration.x – ilkPozisyon.x, 0, -Input.acceleration.z + ilkPozisyon.z ) * 750 );
    }
    if

    {
    transform.Translate( Vector3.forward * 60 * Time.deltaTime );
    transform.position.y = 0.9162631;
    transform.eulerAngles = Vector3.zero;

    }
    }

    Bu arada çok soru soruyorum mazur görün.

  10. Furkan dedi ki:

    pardon ordaki if yok aslında yapılan şu oyun başlıyor araba gidiyor sağa ve sola hareket ettirdiğimde sadece kayıyo ben arabanın dönmesini istiyorum sizin direksiyon uygulamanıydaki gibi ama bu sensörlü olucak ben bakınmaya devam edim kurcaliyim yaparım belki canınız sağolsun yinede teşekkürler

  11. Ahmet dedi ki:

    yaptığımız oyunu apk olarak nasıl kaydediyoruz.

  12. burak dedi ki:

    Main Camereya kodu javascript olarak mono developlamı atıcam? orayı anlamadım

    • yasirkula dedi ki:

      MonoDevelop ile kodu yazacaksınız. Ardından Inspector’dan kodu tutup sürükleyerek Main Camera’nın üzerine bırakacaksınız. Ama bu projede Main Camera’ya atılması gereken bir kod yok. Topa atılması gereken bir kod ve Empty GameObject’e atılması gereken bir kod var.

  13. burak dedi ki:

    main came raya kodlamaları attım kodlardan dolayı apk dosyasına dönüştürüken comlibg scripts diyor ve tepki vermiyo ne yapmam lazım

  14. burak dedi ki:

    Playe basınca all compiler errors have to be fixed before you can enter playmode hatası çok soru sordum hepsine cevap gelirse çok sevinirim.

  15. burak dedi ki:

    sadece en başta main camera ya şu scripti atın deneyin dediğiniz kısmı yaptım ve scripti main cameraya nasıl atıcağımı anlamadım kusura bakma daha yeni başladım bu işe

  16. Emre dedi ki:

    Ben bu kodu kullanarak bir android oyun yapıyorum abi. Oyunu tamamladım telefonlarda düzgün bir şekilde çalışıyor ama tabletime attığımda ileri veya geriye gitmiyor. Sadece sağ ve sola gidiyor. Sorun nedir acaba

    • yasirkula dedi ki:

      İnternetten baktım ben de ama çözüm bulamadım. 😦

      • Emre dedi ki:

        Acaba tablet için ayrı bir kodu mu var ?

      • yasirkula dedi ki:

        Hayır ayrı bir kod yok. Unity’nin bir bug’ı olabilir bu. Şunu deneyin bir de:

        Toptaki scriptin Start fonksiyonuna Input.gyro.enabled = true; yazın.

        Ardından Input.acceleration.x yazan yerlere Input.gyro.attitude.eulerAngles.x yazın. İşe yarar mı hiç bilmiyorum. Ayrıca eğer oyunu Unity Remote ile test ediyorsanız öyle yapmadan deneyin; APK dosyasını tablete atıp yükleyin ve tabletten çalıştırın.

        Input.acceleration’ın değerini test amaçlı kontrol etmek ve x,y,z değerlerinin değişip değişmediğini görmek için dersin en başındaki scripti kullanabilirsiniz.

  17. Emre dedi ki:

    Maalesef denedim ama yine çalışmadı tablette

  18. Emre dedi ki:

    Peki abi teşekkürler

    • samet dedi ki:

      Kardeşim ben top oyununu yapıyorum ama apk alınca top kayboluyor.neden olabilir?
      topu küreden yaptık onun bir etkisi olabilir mi ?? topumuz platformun icine falan gecmiyo o konuda sıkıntı yok normal unity’nin play tusunu kullaninca calisiyor ama apk alinca top kayboluyor? lutfen yardimci olun..

      • yasirkula dedi ki:

        İnternette iki çözüm buldum. İkisi de çalışmayabilir, kesin bir durum yok:

        1- Application.LoadLevel(); satırlarınızın hemen üstüne şu satırı ekleyin: Resources.UnloadUnusedAssets();

        2- Bir plugin kullanıyorsanız (NGUI gibi) bir de onu kullanmadan test edin.

  19. gökhan dedi ki:

    kardeş benim sorum olcaktı androide oyun yapıyorum aynı anda direksiyona dokunurken aynı zamandada gaza dokunmak için ne yapmalıyım ikisinede aynı anda dokunamıyorum

  20. bahattin dedi ki:

    Derslerin kaynak gösterilmeden paylaşılıyor bilgin olsun

    http://www.forumexe.com/frm/unity-3d/1260173-unity-ile-android-e-uygulama-gelistirmek.html

  21. bahattin dedi ki:

    Selamlar, Unitynin kendi sitesindeki learn kısmındaki space shooter yaptım ancak bunu biraz geliştirmek istiyorum örneğin oyuna menü ekledim vs. Ancak bu oyunu androidte gyro sensörle kontrol etmek istediğimde sıkıntı yaşıyorum. Void FixedUpdated kısmına kodu yazıyorum ama bir şekilde hatayı çözemedim. player kontroller scriptim aşağıdaki gibi. Desteğini rica ediyorum.

    using UnityEngine;
    using System.Collections;

    [System.Serializable]
    public class Boundary
    {
    public float xMin, xMax, zMin, zMax;
    }

    public class PlayerController : MonoBehaviour
    {

    public float speed;
    public float tilt;
    public Boundary boundary;

    public GameObject shot;
    public Transform shotSpawn;
    public float fireRate;

    private float nextFire;

    void Update ()
    {
    if (Input.GetButton(“Fire1”) && Time.time > nextFire)
    {
    nextFire = Time.time + fireRate;
    Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
    audio.Play ();
    }
    }

    void FixedUpdate ()
    {
    float moveHorizontal = Input.GetAxis (“Horizontal”);
    float moveVertical = Input.GetAxis (“Vertical”);

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
    rigidbody.velocity = movement * speed;

    rigidbody.position = new Vector3
    (
    Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax),
    0.0f,
    Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax)
    );

    rigidbody.rotation = Quaternion.Euler (0.0f, 0.0f, rigidbody.velocity.x * -tilt);
    }
    }

  22. halis dedi ki:

    Error building Player: Win32Exception: ApplicationName=’D:/javajdk/windowsdk\tools\zipalign.exe’, CommandLine=’4 “C:\Users\pc\Documents\test\Temp/StagingArea/Package_unaligned.apk” “C:\Users\pc\Documents\test\Temp/StagingArea/Package.apk”‘, CurrentDirectory=’Temp/StagingArea’

    uygulama test etmek için buid ettiğim vakit bu hatayı alıyorum.
    sizin notlardaki gibi yaptım işaretlediğiniz API lerlin hepsini instal ettim
    unity SDK yolunu vereceğim zaman normalde bilgisayarda D’ye kurdum tek tek içine gidiyorum SDK yı göstermiyor.unity dışında baktığım zaman görebiliyorum.Yardımcı olabilirmisiniz.Teşekürler.

  23. halis dedi ki:

    linkin içinde sadece eclipse için sdk mavi olarak işaretlenmiş sitede

  24. halis dedi ki:

    Download the stand -alone Android sdk tools for windows bu indirdim kurdum ama yinede olmadı.

  25. halis dedi ki:

    void Update () {
    transform.Translate (10f * Time.deltaTime * Input.GetTouch(“Horizontal”), 0, 0);
    }
    void OnCollisionEnter(Collision col)
    {
    foreach (ContactPoint contact in col.contacts) {
    if(contact.thisCollider==collider)
    {
    float english = contact.point.x -transform.position.x;
    contact.otherCollider.rigidbody.AddForce (500f * english, 0, 0);
    }

    } }
    *****ben bu kodu bir tane çubuğa atıp onu klavyeden sağ sol yapabiliyorum yon tuşalarıyla
    bunu dokunmatik ekrana nasıl uyarlayabilirim****

  26. halis dedi ki:

    GUI textures dokunmatik ekranda işe yarıyormu. Teşekürler şimdiden.

  27. gökhan dedi ki:

    Selamlar, bir sorum olcaktı bir oyun geliştiriyorum fakat bazı scriptleri c# bazılarını javascriptle yazdım c# dan javascriptdeki bir değere nasıl ulaşabilirim?

  28. gökhan dedi ki:

    Teşekkürler

  29. lutfu1996 dedi ki:

    Merhaba Yasir Bey:
    söylediklerinizi tamamen yaptım herşey güzel sorun yok fakat pc de faremin olduğu yer yani fare simgesi yerine telefonda da ekranda parmağımla dokunduğum her yerde fotoğrafta belirttiğim kırmızı yuvarlak içindeki parça parça noktalı görüntü oluyor. bunun çözümü için yardım edebilir misiniz?

    • yasirkula dedi ki:

      Daha önce hiç böyle bir şeye rastlamadım. Joystick texture’sinin bozuk olmadığından emin olun. Compression Format’ını Truecolor yapmayı deneyin.

  30. lutfu1996 dedi ki:

    ben daha baya acemiyim dediğiniz hiçbişeyi anlamadım 🙂
    test etmek için androide build yaparken player settings ten ayar yap dedi de ordan rasgele bişiler yapmıştım . oordan bişi olduğunu düşündüm eski haline getirdim düzeldi hangisi yüzünden neden olduğunu hiç bilmiyorum ama düzeldi 🙂
    Sağolun

  31. lutfu1996 dedi ki:

    Biraz fazla soru sorabilirim kusuruma bakmayın Yasir Bey.
    Sizin verdiğiniz kamera kodlarıyla kamera sabit bir şekilde topu takip ediyor . bazı sorunlara yol açıyor bu da . bu fotoğrafta görüldüğü gibi bi pozisyonda top iki taraftaki küplerin arasında fakat kamera konumu yüzünden gözükmüyor kamera topu arkasından bulunduğu yere göre otomatik olarak doğru konumda takip etmesi için ne yapmalıyım?

    • yasirkula dedi ki:

      Bunun için basit olmayan bir script yazmak lazım. İnternetten güzel kaynak aradım bulamadım. Ben de bu işe bulaşmak istemiyorum. Malesef kendi başınızasınız. Ama ipucu verecek olursam Raycast kullanacağınızı söyleyebilirim.

  32. Halim dedi ki:

    Top geri gelmede sıkıntı oluyor, bu sensör ayarını nasıl yapabilirim?

  33. Halim dedi ki:

    Oyun başlarken sensör değerini aldığını sonradan farkettim baya uğraş sonunda farkedebildim Çok teşekkür ederim böyle güzel paylaşım yaptığınız için

  34. sercan ceylan dedi ki:

    Merhaba Ben topu düz bir zemine yerlestirdim kamera acısı 90 derece kuş bakışı bir görüntü sağlıyor ancak x y eksenlerinde hareket sağlıyorum topa ama yukarı aşağıya ters işliyor ama sağ ve sola normal calışıyor bir türlü yapamadım tüm herseyi dene dim ancak olmadı
    ne yapmalıyım bir fikriniz varmı

  35. Ömer dedi ki:

    Süleyman abi ben arabanın tekerini telefonun sensörlerini kullanarak döndürmeyi istiyorum.Sadece telefonu sağa yatırınca sağa,sola yatırınca tekerin sola dönmesi yeterli.Lütfen yardımcı olabilir misin bir türlü yapamadım 😦

    • yasirkula dedi ki:

      Input.GetAxis(“Horizontal”)’ın geçtiği yerleri Input.acceleration.x ile değiştirmeyi deneyin.

      • Ömer dedi ki:

        Abi nereye yazacağımı tam bulamadım.Kod bu:
        #pragma strict
        var WheelFR : WheelCollider ;
        var WheelFL : WheelCollider ;
        var WheelRR : WheelCollider ;
        var WheelRL : WheelCollider ;
        var maxTorque : float = 50;
        function Start () {
        rigidbody.centerOfMass.y = -0.9;
        }

        function FixedUpdate () {
        WheelRR.motorTorque = maxTorque = Input.GetAxis(“Vertical”);
        WheelRL.motorTorque = maxTorque = Input.GetAxis(“Vertical”);
        WheelFL.steerAngle = 10 * (Input.GetAxis(“Horizontal”));
        WheelFR.steerAngle = 10 * (Input.GetAxis(“Horizontal”));
        }

      • yasirkula dedi ki:

        Son iki satırda Input.GetAxis(“Horizontal”) var. Oralara yazacaksınız.

      • Ömer dedi ki:

        Tamam abi yaptım.Çok sağol 🙂

  36. Burak dedi ki:

    Kameranın objeyi sadece z ekseninde takip etmesini nasıl yapabiliriz ? Böyle yaptığımızda x ekseniyle de takip ediyor.

    • yasirkula dedi ki:

      O zaman kamerayı kimsenin child objesi yapmayın ve ona bir script vererek Update fonksiyonunda transform.position.z’sini hedefin transform.position.z’sine eşitleyin.

      • Burak dedi ki:

        Nasıl eşitleyceğim ? Unity’e yeni geçtimde.

      • yasirkula dedi ki:

        public var obje : Transform; adında bir değişken olsun. Buna değer olarak takip edilecek objeyi verin. Ardından Update fonksiyonunda transform.position.z = obje.position.z; yazın.

    • Burak dedi ki:

      Çok teşekkürler 🙂

  37. halis dedi ki:

    if (_ZeminYaratPos – transform.position.z < 200) {
    Instantiate (_zeminPrefab, new Vector3 (0, 0, _ZeminYaratPos), Quaternion.identity);

    _ZeminYaratPos += 30;

    }

    hocam benim bu tarzda bir zemin yaratma fonksiyonum var beni karekterim ilerledikçe onünde zemin yaratıyorum ama geride sürekli zemin birikiyor ve yavaşlamaya sebep oluyor ben geride kalan zemini nasıl yok edebilirim yardımcı olabilirmisiniz.teşekürler.

    • yasirkula dedi ki:

      Zeminin Start fonksiyonunda Destroy( gameObject, 5.0f ); yazarsanız zemin oluştuktan 5 saniye sonra otomatik olarak yok olur.

      • Emre dedi ki:

        Abi ben topun sadece sağa sola gitmesini istiyorum, öne arkaya gitmesin. Hangi kodu çıkarmam lazım

      • yasirkula dedi ki:

        “-Input.acceleration.z + ilkPozisyon.z” yazan kısmı 0 diye değiştirmeyi deneyebilirsiniz.

  38. Emre dedi ki:

    Maalesef. 🙂 Bu sefer top hiç sağa sola gitmiyor

  39. Arda Gök dedi ki:

    abi şimdi bn ilk önce dediğiniz game objecte o kısa kodu yazdım sürükledim ve tansformu 0 yaptım
    sonra sphere de diğer kodu ekledim ama sphereyi gameobjecye sürükleyince sphere görünmez hale geliyo oyüzden gameobjecti childlama işini yapmadan game objecti silip direk spehere koymayı denedim bu sefer çalıştı bu yöntemle yapmam mobildede çalışmasını etkilermi ?

  40. OkayEren dedi ki:

    Hocam kolay gelsin,

    Şimdi telefon düz bir zeminde olduğunda top hareketi sabit olacak ve geniş ekranda oynamak için hangi kodları yazmak gerekir. Ben pek beceremedim yardımcı olursanız.

  41. halim dedi ki:

    bu konuyla alakasız ama bi sorum olucaktı kaç gündür halledemedim şimdi karakterim düz bi terrainin üzerinde koşuyo düz gittiği zaman bişey yok fakat yana doğru hareket edince sanki gravity yok gibi terrainin içinden kayıp düşüyor bu nu nasıl düzeltirim ?

  42. Kuzey dedi ki:

    araba oyunuma sensorlede kontrol etme eylemini eklemek istiyorum bu kodları bos bi sayfada acıp neleri değiştirmem gerekiyor tam olarak ?

    • yasirkula dedi ki:

      Bir araba kontrol scripti bulup oradaki Input.GetAxis(“Horizontal”) yazan yerleri değiştirmeniz gerekiyor. Belki oraları Input.acceleration.y (x veya z de olabilir) ile değiştirince düzgün çalışır.

  43. Kuzey dedi ki:

    peki halletim orasını tesekkur ederim birseyi daha sorucam sert bi sekilde aniden telefon cevirildiginde drift atmasını istiyorum arabanın yada klayvyeden space tusuna bastıgımdaki el freni cekilmis gibi olsun istiyorum bunu nasıl yapabilirim ?

  44. Emre Kaplan dedi ki:

    kardeşim gyroscope ile bir örneğin var mı yada nasıl kullanıldığı hakkında bir bilgin ?

  45. Emre Kaplan dedi ki:

    En azından benim için çok faydalı olur bitirme tezimi bu konuda yapıyorum şimdiye kadar yapmış olduğun çalışmaları yollayabilir misin peki ?

    • yasirkula dedi ki:

      Dediğim gibi, uzak olmayan bir gelecekte bir gyro örneği paylaşacağım. O zamana kadar elimden birşey gelmiyor. Şu an üzerinde çalıştığım şeyler private sayılır.

  46. Ercan Demir dedi ki:

    Merhaba ben bir tane top ekliyicem bu top sadece sağ sol yapacak ve biz bir şeye basmadan sürekli ilerliyecek kendiliğinden bunu nasıl yapabilirim kod konusunda yardım edebilirsen sevinirim kardeşim.

    • yasirkula dedi ki:

      Topun kendiliğinden gitmesini istiyorsanız Update ya da FixedUpdate fonksiyonlarını kullanabilirsiniz. Örneğin Update’in içine transform.Translate( Vector3.right * Time.deltaTime ); yazarsanız top kendiliğinden sağa doğru hareket eder.

  47. Ercan Demir dedi ki:

    Çok teşekkürler yaptım ancak çok yavaş ilerliyor top hızını nasıl artırabilirim ?

  48. Ercan Demir dedi ki:

    bu prefab nedir acaba unityle ilgili cok fazla bilgim yokta

    • yasirkula dedi ki:

      Prefab bir taslak oluyor. Bu taslak üzerinde değişiklik yaptığınızda, eğer prefab’ın sahnede klon objeleri varsa, o klonlara da aynı değişiklikler uygulanıyor.

  49. Ercan Demir dedi ki:

    şimdide sonsuz yol yapmaya çalışıyorum önceki yaptıgınız orneklere bakarak ama olmuyor kodda hatada vermiyor top ilerliyor ancak yol bitiyo hemen önüne eklenmiyor saatlerdir uğrastım olmuyor 😦

  50. Ercan Demir dedi ki:

    Sizin örneğinizdeki kodu yazdım burda isimi kendi projemdekine göre değiştirmem gereken birşeymi var acaba buradan dolayı olabilirmi ? yada kamerayı ayarlamammı gerekiyor? yardımcı olabilirsen çok sevinirim dostum bugun çok soru sordum sana ama kusura bakma

    void Update()
    {
    float kameraZ = kamera.position.z;
    float bastakiYolZ = yollar[bastakiYol].position.z;

    // eğer en baştaki yol objesi kameranın hizasına kadar gelmişse
    // (yani arabanın gerisinde kalmışsa)
    if( kameraZ >= bastakiYolZ + yolUzunluk )
    {
    // baştaki yolu en sona taşı
    yollar[bastakiYol].position += new Vector3( 0, 0, yolUzunluk * yolSayisi );

    bastakiYol++;
    if( bastakiYol >= yolSayisi )
    bastakiYol = 0;
    }
    }

    • yasirkula dedi ki:

      Hareket Z+ ekseninde oluyor değil mi? X, Y veya Z- ekseninde oluyorsa bu kod işinize yaramaz.

      Kod düzgün çalışıyor mu kontrol etmek için Update’in 3. satırına “Debug.Log( kameraZ + ” ” + bastakiYolZ );” kodunu ekleyebilirsiniz. Böylece her frame’de konsola kameraZ ve bastakiYolZ değerleri yazdırılır ve bu değerler birbirine yaklaşıyor mu kontrol etme şansınız olur.

      • Ercan Demir dedi ki:

        yapamadımda olamdı çok karıştı iyice 😦 bi kod buldum acaba bu işe yararmı bi bakarmısınız ?

        float speed = 4f;

        Update Fonksiyonu ;

        float offset = Time.time * speed;
        renderer.material.mainTextureOffset = new Vector2(0, -offset);
        bu kod sonsuz yol yapmamda yardımcı olurmu ?

      • yasirkula dedi ki:

        Bu kod, objenin üzerindeki kaplamayı hareketlendirir ama sonsuz yolda işinize yaramaz. Sıkıntıyı ben de bilmiyorum :/

  51. Ercan Demir dedi ki:

    bu scripti kameraya attım.

    var olusturmaAraligi : float = 300;
    var sonrakiOlusturma : float= 0;

    var prefab : Transform;

    function Update()
    {
    var mevcutKonum = transform.position.x; //kameranın mevcut konumu
    if(mevcutKonum >= sonrakiOlusturma)
    {

    Instantiate (prefab, Vector3(sonrakiOlusturma, 0, 0), prefab.transform.rotation);
    sonrakiOlusturma += olusturmaAraligi;
    }
    }

    oluşturduğum prefaba şu scripti attım;

    private var kameramain: GameObject;
    kameramain= GameObject.FindWithTag(“MainCamera”);

    if(kameramain.gameObject.transform.position.x>transform.position.x+300){ //eğer kameraın x teki konumu prefabdan 300 birim uzaktaysa prefabı yoket.
    Destroy (gameObject);
    }

    2 tane hata veriyor.

    1.hata =
    UnassignedReferenceException: The variable prefab of syol has not been assigned.
    You probably need to assign the prefab variable of the syol script in the inspector.
    syol.Update () (at Assets/syol.js:14)

    2. hata =
    All compiler errors have to be fixed before you can enter playmode!
    UnityEditor.SceneView:ShowCompileErrorNotification()

    bu hataları neden alıyorum çözümünü bir türlü bulamadım.

    • yasirkula dedi ki:

      İlk hatada dediği şey, syol scriptinin Prefab değişkenine Inspector’dan bir değer vermediğiniz. İkinci hata ise konsoldaki diğer hataları çözmeden oyunun başlamayacağını söylüyor. Yani konsola gelip Clear butonuna tıkladıktan sonra orada kalan hataları çözmeniz lazım.

  52. Alper dedi ki:

    function FixedUpdate()
    {
    rigidbody.AddForce( Vector3( Input.GetAxis( “Horizontal” ), 0, Input.GetAxis( “Vertical” ) ) * 10 );
    rigidbody.AddForce( Vector3( Input.acceleration.x, 0, -Input.acceleration.z ) * 30 );
    }

    Şu Kodun C# çevirerek gönderebilir misiniz?

    • yasirkula dedi ki:
      private Rigidbody _rigidbody;
      
      void Awake()
      {
      	_rigidbody = GetComponent<Rigidbody>();
      }
      
      void FixedUpdate()
      {
      	_rigidbody.AddForce( new Vector3( Input.GetAxis( “Horizontal” ), 0, Input.GetAxis( “Vertical” ) ) * 10 );
      	_rigidbody.AddForce( new Vector3( Input.acceleration.x, 0, -Input.acceleration.z ) * 30 );
      }
      
  53. Alper dedi ki:

    Merhaba Çok Teşekkür Ederim kodu göndermissiniz ama unity üzerinden c# dosyasına attığımda hata alıyorum. Cevabınız İçin Şimdiden Teşekkür eder iyi akşamlar dilerim…

    • yasirkula dedi ki:

      Eğer C# scriptinizin ismi NewBehaviourScript ise kodu şu şekilde bir class’ın içerisine yazmanız lazım:

      using UnityEngine;
      
      public class NewBehaviourScript : MonoBehaviour
      {
      // daha önce attığım kod buraya gelecek
      }
      
  54. Alper dedi ki:

    Teşekkür ederim. Ama dediğinizi yaptım yine hatayla karşılaştım. Attığım kod, Şimdiden cevabınız için teşekkür eder iyi aklamlar dilerim…

    using UnityEngine;

    public class NewBehaviourScript : MonoBehaviour
    {
    private Rigidbody _rigidbody;

    void Awake()
    {
    _rigidbody = GetComponent();
    }

    void FixedUpdate()
    {
    _rigidbody.AddForce( new Vector3( Input.GetAxis( “Horizontal” ), 0, Input.GetAxis( “Vertical” ) ) * 10 );
    _rigidbody.AddForce( new Vector3( Input.acceleration.x, 0, -Input.acceleration.z ) * 30 );
    }
    }

  55. Alper dedi ki:

    Assets/NewBehaviourScript.cs(9,30): error CS0411: The type arguments for method `UnityEngine.Component.GetComponent()’ cannot be inferred from the usage. Try specifying the type arguments explicitly

    • yasirkula dedi ki:

      Şöyle olmalı:

      _rigidbody = GetComponent<Rigidbody>();

      WordPress’te ‘küçüktür’ ve ‘büyüktür’ işaretleri tag olarak algılanıp otomatik olarak silindiğinden sıkıntı olmuştur.

  56. Alper dedi ki:

    Teşekkür Ederim

  57. Alper dedi ki:

    hata mesajını gönderdim

  58. Mucahit dedi ki:

    Selamun aleykum sayenizde oyunumun sonuna geldim bayadir ugrastigim cozemedigim bi sorunum var temple run tarzi bi oyun yapiyorum oyunumda karakteri addforce ile hareket ettiriyodum android icinde kodlari yazmistim ama addforce kullandigimda saga donerken capraz gittigi icin hos olmuyo character controller daha uygun geldi pc uzerinde karakterimi hareket ettiriyorum ama android icin kodlari yazamadim bi turlu android icinde parmagimizi ekrana basilip tutup saga cekip biraktigimizda karakter saga gitsin istiyorum yardimci olursan cok sevinirim abi

    • yasirkula dedi ki:

      Şuna benzer bir kod kullanabilirsiniz:

      private int parmakId = -1;
      private Vector2 parmakKonum = Vector2.zero;
      
      public float minimumHareketMiktari = 5f; // Parmağın yatayda en az kaç pixel hareket etmesi gerektiği
      
      void Update()
      {
      	for( int i = 0; i < Input.touchCount; i++ )
      	{
      		Touch parmak = Input.GetTouch( i );
      		if( parmak.phase == TouchPhase.Began && parmakId == -1 )
      		{
      			parmakId = parmak.fingerId;
      			parmakKonum = parmak.position;
      		}
      		else if( ( parmak.phase == TouchPhase.Ended || parmak.phase == TouchPhase.Canceled ) && parmakId == parmak.fingerId )
      		{
      			parmakId = -1;
      			
      			float delta = parmak.position - parmakKonum;
      			if( delta > minimumHareketMiktari )
      				ParmakSagaKaydirildi();
      			else if( delta < -minimumHareketMiktari )
      				ParmakSolaKaydirildi();
      		}
      	}
      }
      
      private void ParmakSolaKaydirildi()
      {
      	// Karakteri sola hareket ettir
      }
      
      private void ParmakSagaKaydirildi()
      {
      	// Karakteri sağa hareket ettir
      }
      
      • Mucahit dedi ki:

        float delta = parmak.position – parmakKonum;

        Kodun burasinda hata veriyor vector2.turu ortulu olarak float turune donusturulmez diye nasil duzeltilir

      • yasirkula dedi ki:

        float delta = parmak.position.x – parmakKonum.x;

      • Mucahit dedi ki:

        abi kod oldu eyvallah ama saga veya sola gecerken ekranda bi kayma oluyo sanki sebebi ne olabilir

      • Mucahit dedi ki:

        kusura bakma abi cok sey sordum da çıkamadım işin içinden yazdğım kod tam olarak bu

        using UnityEngine;
        using System.Collections;

        public class bbbb : MonoBehaviour {
        private CharacterController controller;
        public float speed = 6.0f;
        public float donushiz;
        public float jumpSpeed = 8.0f;
        public float gravity = 20.0f;
        private Vector3 moveVector;
        private float verticalVelocity=0.0f;
        private int parmakId = -1;
        private Vector2 parmakKonum = Vector2.zero;

        public float minimumHareketMiktari = 5f; // Parmağın yatayda en az kaç pixel hareket etmesi gerektiği

        void Start () {
        controller = GetComponent();
        }

        void Update () {
        moveVector = Vector3.zero;
        moveVector.x = Input.GetAxisRaw (“Horizontal”) * donushiz;
        moveVector.z = speed;
        moveVector.y = verticalVelocity;
        controller.Move (moveVector * Time.deltaTime);

        if (controller.isGrounded) {
        verticalVelocity = -0.5f;

        }
        else
        {
        verticalVelocity -=gravity*Time.deltaTime;

        }
        if (Input.GetButton (“Jump”)) {
        verticalVelocity=jumpSpeed;
        }
        controller.Move (moveVector * Time.deltaTime);
        for( int i = 0; i minimumHareketMiktari )
        ParmakSolaKaydirildi();
        else if( delta < -minimumHareketMiktari )
        ParmakSagaKaydirildi();

        }
        }
        }

        private void ParmakSolaKaydirildi()
        {
        moveVector.x = -donushiz;
        }

        private void ParmakSagaKaydirildi()
        {
        moveVector.x = donushiz;
        }
        }

  59. Mucahit dedi ki:

    Karakterimiz saga veya sola giderken subway surfdeki gibi sadece belli araliklarda ve isinlanma gibi degilde animasyonlu bi sekilde nasil yapabiliriz

  60. Mucahit dedi ki:

    Eyvallah abi cok sagol

  61. Mucahit dedi ki:

    Acikcasi saga sol ziplama islemlerini boyle yapmak istiyorum gunlerdir bi cozum bulamadim musait bi zamaninda izlersen yorumunu bekliyorum abi

    https://youtu.be/9cGwwciG32w

    • yasirkula dedi ki:

      Ya Root Motion’lı bir animasyon ya da belli bir süre içerisinde belli bir miktar yatayda hareket etmeye yarayan bir kod olacak. Daha da araştırma yapmanız lazım, ben meşgul olduğum için yardımcı olamayacağım. Yalnız attığınız kodda benim kodumdan bazı parçalar silinmiş, şu haliyle doğru çalışmayabilir.

  62. samet dedi ki:

    merhaba butonları nasıl dokunmati yapıyoruz

  63. Muhammet dedi ki:

    Hocam 3. ders varmı?Bide ellerinize sağlık çok güzel olmuş.

  64. sezer dedi ki:

    selamun aleykum aynı sekılde yaptım ama calıstırdıgım zaman ” all compıler errors ” dıye bır hata verıyor sebebı nedır kı acaba

    • yasirkula dedi ki:

      Konsoldaki (console) hata mesaj(lar)ını çözmeniz lazım. Bunun için o mesaj(lar)ı internette aratabilir veya çözemezseniz burada paylaşabilirsiniz.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s