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; } }
@yasirkula kardeşim yapmak istediğim işlem burada konusunu bulamadım o yüzden buraya yazacağım.
sorunum şu bir hidrant düşün hidranta çarpınca geri geliyor fakat -90 olarak çağıyor Rotation X 0 olarak gelmesini sağlamak istiyorum.
3D modelin rotasyonu 0,0,0 iken obje yamuk duruyorsa ve bunu düzeltmek istiyorsanız, 3D modelleme programında objenin pivot’unu döndürmeniz, objeye istediğiniz rotasyona sahip boş bir GameObject’i parent olarak vererek artık o parent objeyi kullanmanız ya da pivot’u Unity içerisinden düzenlemeye yarayan bir tool kullanmanız lazım (Asset Store’dan bulabilirsiniz ama 3D modelleme programında yapmak en temizi olabilir).
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.