UNITY’de Hile Sistemi Oluşturmak (GTA Tarzı)

Yayınlandı: 05 Ağustos 2013 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Yine ve yeniden merhaba,

Bu derste, Unity‘de GTA oyunlarında olduğu gibi bir hile sistemi kodlamayı göstereceğim (LEAVEMEALONE veya ASPIRINE tarzı). Daha doğrusu çoktan kodladığım bu sistemin kaynak kodunu vereceğim.

Kod için yazının devamını okuyabilirsiniz…

Hile adında yeni bir C# script’i oluşturup bunu kameraya component olarak verin ve Inspector’dan “Hile Kodu“na istediğiniz gibi bir hile kodu girin (örneğin 1adamvarmışcanısıkılan). Oyun esnasında hile kodunu tuşladığınızda, konsola hilenin aktifleştirildiği log’u düşecek. Hile aktifleştirildiğinde yapılacakları ise, bu log’u gösteren print‘li satırın olduğu yere yazabilirsiniz.

using UnityEngine;

public class Hile : MonoBehaviour
{
	public string hileKodu;
	public float ikiTusArasiMaxZaman = 1f;

	private float enSonTusaBasmaZamani;
	private int basilmasiGerekenSiradakiHarf;

	void Start()
	{
		if( hileKodu == null || hileKodu.Length == 0 )
			Destroy( this );

		// Hile kodundaki tüm harfleri büyük harfe çevir
		hileKodu = hileKodu.ToUpper();

		// İ harflerini I harfiyle değiştir (yoksa işler karışabiliyor)
		hileKodu = hileKodu.Replace( 'İ', 'I' );

		enSonTusaBasmaZamani = Time.realtimeSinceStartup;
		basilmasiGerekenSiradakiHarf = 0;
	}

	private void Update()
	{
		if( Input.anyKeyDown )
		{
			string input = Input.inputString;
			if( input != null && input.Length > 0 )
			{
				char tus = input[0];
				if( tus >= 32 )
				{
					tus = char.ToUpper( tus );
					if( tus == 'İ' )
						tus = 'I';

					TusuIslemeAl( tus );
				}
			}
		}
	}

	private void TusuIslemeAl( char tus )
	{
		//Debug.Log( tus + " işleme alındı" );

		// Eğer bir önceki tuşa bastıktan sonra geçen zaman çok fazlaysa hileyi başa sar
		if( Time.realtimeSinceStartup > enSonTusaBasmaZamani + ikiTusArasiMaxZaman )
			basilmasiGerekenSiradakiHarf = 0;

		if( tus == hileKodu[basilmasiGerekenSiradakiHarf] )
		{
			// Eğer doğru tuşa basarsak...
			basilmasiGerekenSiradakiHarf++;

			if( basilmasiGerekenSiradakiHarf >= hileKodu.Length )
			{
				basilmasiGerekenSiradakiHarf = 0;

				// Hile kodu başarıyla girildi! Yapılacakları buraya yaz...
				print( "Hile " + Time.realtimeSinceStartup + " anında aktifleştirildi!" );
			}
		}
		else
		{
			// Eğer yanlış tuşa basarsak...
			if( hileKodu[0] == tus )
				basilmasiGerekenSiradakiHarf = 1;
			else
				basilmasiGerekenSiradakiHarf = 0;
		}

		enSonTusaBasmaZamani = Time.realtimeSinceStartup;
	}
}

Anonim için bir cevap yazın Cevabı iptal et

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 )

Google fotoğrafı

Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.