Perşembe, Nisan 26, 2018

Unity Parmak Swipe Kontrolleri

  Hiç yorum yok

Unity Dokunmatik Parmak Kontrolleri (Swipe Control)

Unity Dokunmatik Parmak Kontrolleri


Öncelikle hepinize merhaba bu yazımda sizlere unity ile mobil oyun geliştiricilerini yakından ilgilendiren bir konu üzerinde duracağım bu konumda sizlere unity ile oyun yaptınız ve karakterinizin zıplamasını veya eğilmesini sağlamak istiyorsunuz ve bunu telefonda parmak ile dokunarak ya da  parmağı yukarı – aşağı kaydırarak sağlamak istiyorsanız bu yazımı okuyabilirsiniz.

Geçenlerde yeni bir oyun yapımına başladım ve karakterimin aşağı – yukarı hareketler yapması gerekiyordu ve bunun için yeterli bir bilgiye sahip değildim ve açıkçası söylemek gerekirse bana zor gelmişti. Yasir Kula isimli bir abimin unity ile ilgili bir blogunda konuları okurken dokunmatik için bir çok input sistemi gördüm ama hiç biri işime yaramadı ve o konuya yorum attım ve beni kırmadı. Yardımcı oldu. Çok teşekkür ediyorum kendisine.

İlk olarak gelelim ekrandaki herhangi bir yere tıklandığı zaman karakterin zıplamasını ya da belirlediğiniz hareketi yapmasını sağlamaya.

Bu çok kolay bunun için basit bir kod yazacak olursak :

if (Input.GetTouch(0).phase == TouchPhase.Began){
Buraya yapmasını istediğiniz hareketleri yazmanız yeterli.
Örneğin :  SceneManager.LoadScene(0, LoadSceneMode.Single);
Yukarıdaki kodu yazarsanız ekrandaki bir yere tıklandığı zaman 0. bölüm açılacaktır.
}
Gelelim parmak hareketlerine göre zıplama – eğilme ya da istediğimiz bir hareketi yaptırmaya. İlk olarak bir resim(image) dosyası ekleyip ardından ParmakSwipeKontrol isimli bir c# scripti açıp aşağıdaki kodları yapıştırın. c# dosyasını resim (image) dosyasına sürükleyin. Kodlar arasında yapılmasını istediğiniz kodları yazın – düzenleyin ve kullanın.

using UnityEngine;
using UnityEngine.EventSystems;

public class ParmakSwipeKontrol : MonoBehaviour, IDragHandler
{
public float kaydirmaMiktari = 15f;

void Start(){
}

public void OnDrag( PointerEventData eventData )
{
float delta = eventData.position.y - eventData.pressPosition.y;
if( delta > kaydirmaMiktari )
{
eventData.pointerDrag = null; // Yukarı kaydırma
Parmak yukarı kayınca yapılacaklar
}
}
else if( delta < -kaydirmaMiktari )
{
eventData.pointerDrag = null; // Aşağı kaydırma
Parmak aşağı kaydırılınca yapılacaklar
}
}
}
Yukarıdaki kodlarda gerekli açıklamaları yaptım. Parmak yukarı – aşağı kaydırılınca yapılacaklar kısmına karakterinizin ya da oyununuzda olmasını istediğiniz şeylerin kodlarını yazarak yapılmasını sağlayabilirsiniz. Benim oyunumda kullandığım karakterin zıplamasını sağlayan kod:

 Karakter :


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

public class karakter : MonoBehaviour {
public float hiz,ziplama_gucu;
public Camera kamera;
public static bool yerdemi;
public static bool zipla;
public static bool egil;
public float hizlandiricitime;

Rigidbody2D agirlik;
// Use this for initialization
void Start () {
agirlik = GetComponent ();
}

public static void yerdemii (){
yerdemi = true;
}
private void Update()
{
hizlandiricitime += Time.deltaTime;
if (hiz < 10)
{
if (hizlandiricitime > 30.0f)
{
hiz = hiz + 0.5f;
hizlandiricitime = 0f;
}
}
else { }
}

// Update is called once per frame
void FixedUpdate () {
kamera.transform.Translate (Vector3.right * hiz * Time.deltaTime);

Vector3 up = transform.TransformDirection (Vector3.up);

transform.Translate(Vector3.right * hiz * Time.deltaTime);

if (zipla == true) {
agirlik.AddForce (up * ziplama_gucu, ForceMode2D.Impulse);
yerdemi = false;
zipla = false;
}
if (egil == true) {
agirlik.AddForce (up * -ziplama_gucu, ForceMode2D.Impulse);
egil = false;
}
}

}

Bu C# dosyasını oyundaki karakterinize sürüklemeniz gerekiyor. Ardından hız vb değerleri atamanız yeterli olacaktır. Ardından Image dosyası oluşturun ve aşağıdaki kodları bir başka C# dosyasına atıp image dosyasına sürükleyin.



Artık parmağınız – mausunuzu üste sürüklediğiniz zaman karakteriniz zıplayacak aşağıya sürüklediğiniz zaman aşağıya doğru hız ile inecektir

using UnityEngine;
using UnityEngine.EventSystems;

public class ParmakSwipeKontrol : MonoBehaviour, IDragHandler
{
public float kaydirmaMiktari = 15f;

void Start(){
}

public void OnDrag( PointerEventData eventData )
{
float delta = eventData.position.y - eventData.pressPosition.y;
if( delta > kaydirmaMiktari )
{
eventData.pointerDrag = null; // Yukarı kaydırma
if (karakter.yerdemi == true) {
karakter.zipla = true;
}
}
else if( delta < -kaydirmaMiktari )
{
eventData.pointerDrag = null; // Aşağı kaydırma
karakter.egil = true;
}
}
}
Bu kodları kullandığım oyunum. Run for Run Google Play Store dan indirip oynayabilirsiniz.

Eğer bu yazıyı beğendiyseniz aşağıdaki butonlar ile paylaşabilirsiniz.

Hiç yorum yok :

Yorum Gönder