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

Posted: 22 Temmuz 2013 by yasirkula in Oyun Tasarımı, UNITY 3D
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!

Yorumlar
  1. erdem diyor ki:

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

  2. RO diyor ki:

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

  3. alperen diyor ki:

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

    • yasirkula diyor 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 diyor 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 diyor 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 diyor ki:

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

      • yasirkula diyor 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çı diyor ki:

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

      • yasirkula diyor 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 diyor ki:

    çok teşekkür ederim

    • Emre diyor 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 diyor 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 diyor ki:

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

      • yasirkula diyor 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 diyor 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 diyor ki:

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

      • yasirkula diyor 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 diyor ki:

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

      • Emre diyor ki:

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

  6. Murat diyor 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 diyor 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 diyor 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 diyor 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. diyor 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 diyor 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. diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

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

  12. burak diyor ki:

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

    • yasirkula diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

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

      • Emre diyor ki:

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

      • yasirkula diyor 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 diyor ki:

    Maalesef denedim ama yine çalışmadı tablette

  18. Emre diyor ki:

    Peki abi teşekkürler

    • samet diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

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

  24. halis diyor ki:

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

  25. halis diyor 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 diyor ki:

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

  27. gökhan diyor 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 diyor ki:

    Teşekkürler

  29. lutfu1996 diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

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

  33. Halim diyor 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 diyor 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 diyor 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 diyor ki:

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

      • Ömer diyor 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 diyor ki:

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

      • Ömer diyor ki:

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

  36. Burak diyor ki:

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

    • yasirkula diyor 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 diyor ki:

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

      • yasirkula diyor 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 diyor ki:

      Çok teşekkürler 🙂

  37. halis diyor 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 diyor ki:

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

      • Emre diyor ki:

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

      • yasirkula diyor ki:

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

  38. Emre diyor ki:

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

  39. Arda Gök diyor 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 diyor 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 diyor 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 diyor ki:

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

    • yasirkula diyor 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 diyor 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 diyor ki:

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

  45. Emre Kaplan diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

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

  48. Ercan Demir diyor ki:

    bu prefab nedir acaba unityle ilgili cok fazla bilgim yokta

    • yasirkula diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

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

  51. Ercan Demir diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor 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 diyor ki:

    Teşekkür Ederim

  57. Alper diyor ki:

    hata mesajını gönderdim

  58. Mucahit diyor 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 diyor 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 diyor ki:

        float delta = parmak.position – parmakKonum;

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

      • yasirkula diyor ki:

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

      • Mucahit diyor ki:

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

      • Mucahit diyor 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 diyor ki:

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

  60. Mucahit diyor ki:

    Eyvallah abi cok sagol

  61. Mucahit diyor 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 diyor 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.

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. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s