This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold’da girdinin (input) genel olarak nasıl çalıştığını, girdinin nasıl alındığını ve betik dosyalarınızın girdiyi hangi sırayla aldığını öğrenmeniz önerilir. Girdi sistemi hakkında daha fazla bilgi için Girdiye genel bakış kılavuzuna bakın.
Fare tetikleyicileri (mouse triggers), fare düğmelerinden ve tekerleklerinden gelen girdiyi oyun eylemlerine bağlamanızı sağlar.

MOUSE_BUTTON_LEFT, MOUSE_BUTTON_RIGHT ve MOUSE_BUTTON_MIDDLE fare düğmesi girdileri, sırasıyla MOUSE_BUTTON_1, MOUSE_BUTTON_2 ve MOUSE_BUTTON_3 ile eşdeğerdir.
Aşağıdaki örnekler, yukarıdaki görüntüde gösterilen eylemleri kullanır. Tüm girdilerde olduğu gibi, girdi eylemlerinize (input action) istediğiniz adı verebilirsiniz.
Fare düğmeleri pressed, released ve repeated olayları üretir. Aşağıdaki örnek, sol fare düğmesinin girdisinin (basılma veya bırakılma) nasıl algılandığını gösterir:
function on_input(self, action_id, action)
if action_id == hash("mouse_button_left") then
if action.pressed then
-- left mouse button pressed
elseif action.released then
-- left mouse button released
end
end
end
MOUSE_BUTTON_LEFT (veya MOUSE_BUTTON_1) girdi eylemleri, tekli dokunma girdileri için de gönderilir.
Fare tekerleği girdileri kaydırma eylemlerini algılar. Tekerlek döndürüldüğünde action.value alanı 1, aksi durumda 0 olur. (Kaydırma eylemleri, düğmeye basma gibi işlenir. Defold şu anda dokunmatik yüzeylerde hassas kaydırma girdisini desteklemez.)
function on_input(self, action_id, action)
if action_id == hash("mouse_wheel_up") then
if action.value == 1 then
-- mouse wheel is scrolled up
end
end
end
Fare hareketi ayrı olarak işlenir. Girdi eşlemelerinizde (input binding) en az bir fare tetikleyicisi ayarlanmadıkça fare hareketi olayları alınmaz.
Fare hareketi girdi eşlemelerinde bir eyleme bağlanmaz; bunun yerine action_id değeri nil olarak ayarlanır ve action tablosu farenin konumu ve konumundaki değişimle doldurulur.
function on_input(self, action_id, action)
if action.x and action.y then
-- let game object follow mouse/touch movement
local pos = vmath.vector3(action.x, action.y, 0)
go.set_position(pos)
end
end
Tekli dokunma (single-touch) ve çoklu dokunma (multi-touch) türündeki tetikleyiciler, iOS ve Android cihazlarda hem yerel uygulamalarda hem de HTML5 dağıtım paketlerinde kullanılabilir.

Tekli dokunma türündeki tetikleyiciler, girdi eşlemelerinin Touch Triggers bölümünden ayarlanmaz. Bunun yerine MOUSE_BUTTON_LEFT veya MOUSE_BUTTON_1 için fare düğmesi girdisini ayarladığınızda tekli dokunma tetikleyicileri otomatik olarak ayarlanır.
Çoklu dokunma türündeki tetikleyiciler, eylem tablosunun içindeki touch adlı tabloyu doldurur. Tablonun elemanları 1–N aralığındaki tam sayılarla indekslenir; burada N, dokunma noktalarının sayısıdır. Tablodaki her eleman girdi verileri içeren alanlar barındırır:
function on_input(self, action_id, action)
if action_id == hash("touch_multi") then
-- Spawn at each touch point
for i, touchdata in ipairs(action.touch) do
local pos = vmath.vector3(touchdata.x, touchdata.y, 0)
factory.create("#factory", pos)
end
end
end
Çoklu dokunmaya, MOUSE_BUTTON_LEFT veya MOUSE_BUTTON_1 fare düğmesi girdisiyle aynı eylem atanmamalıdır. Aynı eylemi atamak, tekli dokunmanın yerini alır ve herhangi bir tekli dokunma olayı almanızı engeller.
Defold-Input varlığı, çoklu dokunma desteğine sahip düğmeler ve analog çubuklar gibi sanal ekran kontrollerini kolayca oluşturmak için kullanılabilir.
Kullanıcının görsel bir bileşene (component) ne zaman tıkladığını veya dokunduğunu algılamak, birçok oyunda ihtiyaç duyulan çok yaygın bir işlemdir. Bu, kullanıcının bir düğmeyle veya başka bir kullanıcı arayüzü (UI) öğesiyle etkileşimi olabilir. Strateji oyununda oyuncunun yönettiği bir birim, zindan keşif oyununda bir bölümdeki hazine veya rol yapma oyununda (RPG) görev veren bir karakter gibi bir oyun nesnesiyle (game object) etkileşim de olabilir. Kullanılacak yaklaşım, görsel bileşenin türüne göre değişir.
Kullanıcı arayüzü öğeleri için gui.pick_node(node, x, y) işlevi bulunur. Bu işlev, belirtilen koordinatın bir GUI düğümünün (GUI node) sınırları içinde olup olmamasına göre true veya false döndürür. Daha fazla bilgi için API belgelerine, işaretçinin öğe üzerinde olmasını algılama örneğine veya düğme örneğine bakın.
Kamera ötelemesi ve işleme betiğinin (render script) izdüşümü gibi etkenler gerekli hesaplamaları etkilediğinden, oyun nesneleriyle etkileşimi algılamak daha karmaşıktır. Oyun nesneleriyle etkileşimi algılamak için iki genel yaklaşım vardır:
Çarpışma nesneleriyle kullanıcı girdisini algılamak için sürükleme ve tıklama desteğine sahip, kullanıma hazır bir çözümü Defold-Input varlığında bulabilirsiniz.
Her iki durumda da fare veya dokunma olayının ekran uzayı (screen space) koordinatları ile oyun nesnelerinin dünya uzayı (world space) koordinatları arasında dönüşüm yapmak gerekir. Bunu birkaç farklı yolla yapabilirsiniz: