Klavye ve Fare
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 45 / 60.
Input System her aygıta bir nesne verir. Keyboard.current klavyedir ve üzerindeki her tuş, adı olan bir denetimdir: spaceKey, aKey, upArrowKey veya herhangi bir tuş için Key değeriyle Keyboard.current[Key.Space]. Mouse.current fareyi temsil eder; leftButton, rightButton ve position özelliklerine sahiptir. Bir denetimin isPressed özelliği, basılı tutulduğu her karede true olur; tıpkı Input.GetKey gibi. Bu denizaltı ok tuşlarıyla dalar ve su yüzüne çıkar, fare düğmesi basılı tutulurken de arama ışığını yakar:
using UnityEngine;
using UnityEngine.InputSystem;
public class Submarine : MonoBehaviour
{
public float diveSpeed = 2f;
public Light searchlight;
void Update()
{
Keyboard keyboard = Keyboard.current;
if (keyboard == null) return; // bağlı klavye yok
if (keyboard.downArrowKey.isPressed)
transform.position += Vector3.down * diveSpeed * Time.deltaTime;
if (keyboard.upArrowKey.isPressed)
transform.position += Vector3.up * diveSpeed * Time.deltaTime;
searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
}
}current, en son kullanılan aygıttır ve aygıt yoksa null olur: telefonda veya konsolda klavye olmayabilir ve null denetimleri betiğin bu durumda hata vermesini önler. Klavyede eksenler yoktur; bu nedenle aşağı ok ve S iki ayrı tuştur: S tuşuna basıldığında da dalması gereken bir denizaltı, keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed koşulunu denetler. Mouse.current.position.ReadValue(), Input.mousePosition gibi, işaretçinin ekranın sol alt köşesinden itibaren piksel cinsinden konumunu bir Vector2 olarak verir.
Görev
OrtaSıcak hava balonunu Keyboard.current ve Mouse.current ile uçur.
rightArrowKeyveyadKeyisPressedolduğunda, saniyededriftbirim hızla +x yönünde ilerle;leftArrowKeyveyaaKeyolduğunda -x yönünde ilerle.bool burner,spaceKeyveyaleftButtonbasılı olduğunda etkin olur;flame.SetActive(burner);çağrısını yap.- Brülör açıkken
risehızında yüksel; kapalıykensinkhızında alçal, ancakgroundYdeğerinin altına inme.
“Oyna” düğmesine bas ve uç: yükselmek için Boşluk tuşunu veya fare düğmesini basılı tut. Ardından “Kontrol et”.
Kendin dene
using UnityEngine;
using UnityEngine.InputSystem;
public class Balloon : MonoBehaviour
{
public float drift = 2f;
public float rise = 3f;
public float sink = 1f;
public float groundY = 2f;
public GameObject flame;
void Update()
{
// Ok tuşları veya A ve D ile sürüklen, Space veya fare ile yak
}
}
Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki Paralar3Oyun Yöneticisi
Oyunu Tek Bir Betik YönetiyorSingletonOyun DurumlarıDuruma Göre GeçişÖzet: Tur Yöneticisi6Proje: Sonsuz Koşucu
Üç ŞeritÖnümüzde Engeller9Yeni Girdi Sistemi
İki Girdi SistemiKlavye ve FareBu Karede BasıldıGirdi EylemleriTekrar: Girdi DeğişimiKendi başına pratik yap: Unity playground