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; } }
hilenin ne olacağını örn: “aspirine” kısmını nereye yazıyoruz, teşekkürler
Hile script’ini bir objeye component olarak verdikten sonra, o objenin Inspector’undaki “Hile Kodu”na yazabilirsiniz.