Unity3D Mobil Kontroller Yönlendirme - 2

1.parta gitmek için: Unity3D Mobil Kontroller Yönlendirme - 1

Kontroller

Android de sağ ve sola gitmek için butonlar olur. Bu yüzden oyunumuza iki tane buton ekleyeceğiz. Hierarchy panelinde Create e tıklayıp UI sekmesinden Button u seçeceğiz. Bu işlemi iki defa yapacağız. Bu arada zeminimizin boyutunuda artıralım bunun için zemin objemize tıklayıp Inspector den Transform içindeki Scale kısmında X i 3, Y yi de 2 yapalım. Tüm bunlardan sonra sahnemiz böyle gözükecek.

Butonları ekledikten sonra Canvas objesine tıklayıp Inspector de Canvas ın altında Render Mode u Screen Space - Camera yapın ve onun hemen altındaki Render Camera ya da Main Camera yı sürükleyin. Butonlarımızı istediğimiz yere sürükleyip, Inspectorda Rect Transform altında Width ve Height ile butonumuzun genişlik ve yüksekliğini ayarlayıp, üstünde yazanı Button objesinin altındaki Text ten değiştirebiliriz.

Kodlama
Kodlamaya geçmeden önce Hierarchy panelinde Karakterimizin üstüne tıklayın ve Inspector panelindeki Add Component butonuna tıkladıktan sonra arama kutusuna Rigidbody 2D yazın veya Physics 2D butonundan Rigidbody 2D yi seçin. Project panelinden Create butonuyla bir C# Script oluşturun. Ve adına da karakterKont koyalım. Kod isimlerine Türkçe karakter girmemeye özen gösterin (ğ, ü, ı, ö, ç, ş). Üstüne 2 kere tıklayarak açın. 





Karakterimizi sağa sola hareket ettirmek için butonlara basacağız. Bastığımızda hareket edecek, basmadığımızda ise duracak. 
Kodlar:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class karakterKont : MonoBehaviour {

 public bool sagaGit, solaGit;
 Rigidbody2D rb;
 public float hiz = 5f;

 // Use this for initialization
 void Start () {
  rb = this.gameObject.GetComponent ();
 }
 
 // Update is called once per frame
 void Update () {
  if (sagaGit) {
   rb.velocity = new Vector2 (hiz, rb.velocity.y);
  } else if (solaGit) {
   rb.velocity = new Vector2 (-hiz, rb.velocity.y);
  } else {
   rb.velocity = Vector2.zero;
  }
 }
}

Kodda kullandığımız bool değişkenleri bu işlevi yapacak ancak hareket ettirmek onları değiştirmemiz gerekiyor. İşte butonu burada kullanacağız. Şimdi 1 tane daha C# Script i oluşturalım. İsmi butonKodlari1 olsun. 

Kodlar:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class butonKodlari1 : MonoBehaviour {
 public GameObject karakter;
 public karakterKont karakterKont;

 // Use this for initialization
 void Start () {
  karakterKont = karakter.GetComponent ();
 }


 public void SagButonBas(){
  karakterKont.sagaGit = true;
  karakterKont.solaGit = false;
 }

 public void SolButonBas(){
  karakterKont.solaGit = true;
  karakterKont.sagaGit = false;
 }

 public void ButonaBasma(){
  karakterKont.solaGit = false;
  karakterKont.sagaGit = false;
 }
}

Şimdi karakter objemiz seçili haldeyken Add Component butonuyla Script sekmesinde karakterKont kodumuzu bulup tıklayalım. Daha sonra sol butonumuz seçili haldeyken Add Component butonuyla Script sekmesinde butonKodlari1  kodumuzu bulup tıklayalım. Burda yapmamız gereken tek işlem kodumuzu ekledikten sonra Karakter yazan yere Hierarchy deki karakter objemizi sürükleyip atıyoruz. Ve aynı işlemi sağ buton için de uyguluyoruz.

Buton Bileşenleri
Şimdi yapmamız gereken sağ buton seçili haldeyken Add Component butonuna basarak alttaki Event sekmesinden Event Trigger i butona atmak. Ardından Event Trigger da bulunan Add New Event Type butonuyla Pointer Down ve Pointer Up koşullarını tıklıyoruz. Sonra altlarındaki artı ( + ) işaretine tıklıyoruz ve None yazan yere üstteki Buton Kodlari 1 bileşinini sürüklüyoruz. Pointer Down koşulunda bulunan No Function butonunu tıklıyoruz ve oradan buton kodlari 1 in içindeki Sag Buton Bas ı seçiyoruz. Pointer Up a ise yine aynı yerden ButonaBasma yı seçiyoruz. Aynı işlemi sol butonada uyguluyoruz fakat orada Pointer Down kısmında No Function butonuna buton kodlari 1 in içindeki Sol Buton Bas ı seçiyoruz. Tek fark bu.



Yorum Gönder

1 Yorumlar

  1. Merhaba hocam ben butona tıklanma bırakılınca karakterin eski yerine gelmesini istiyorum nasıl yapabilirim lütfen yardım edin
    İletişim: zceylin101@gmail.com

    YanıtlaSil