Kullanıcı girişini algıla

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Kullanıcı girişini eylemlere bağlamak, kullanıcılara oyunun özellikleri üzerinde çok daha iyi ve sezgisel bir kontrol sağlar. Bu eğitimde, bir yeniden yükleme eylemini belirli bir tuşa bağlayacaksınız.

Başlarken

Bu eğitim, Oyun Araçları Oluştur bölümünde oluşturulan Blaster aracını kullanmaktadır. Aracı oluşturmak için bu talimatları takip edebilir veya Blaster modelini indirip StarterPack'e ekleyebilirsiniz.

Modeller, herhangi bir oyunda kullanılmak üzere Envanterinize eklenebilir. Bir modeli oyununuza eklemek için:

  1. Bir tarayıcıda, model sayfasını açın, Al butonuna tıklayın. Bu, modeli envanterinize ekler.
  2. Studio'nun Pencere menüsünden veya Ana Sayfa sekmesi araç çubuğundan Araç Kutusu 'nu açın ve Envanter sekmesini seçin.
  3. Aşağı açılır menünün Benim Modellerim üzerinde olduğundan emin olun.
  4. Blaster modelini seçerek oyuna ekleyin.

Bir eylem işleyici oluşturun

Öncelikle, kullanıcı girişi algılandığında işleyecek bir fonksiyona ihtiyacınız olacak.

  1. Blaster içindeki ToolController LocalScript'ini açın.

    Blaster aracının içindeki ToolController betiğinin seçili olduğu Gezgini görüntüleme

  2. Eylem için bir isim saklamak üzere bir değişken oluşturun.

    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  3. actionName, inputState ve inputObject adında üç argüman alan onAction adında bir fonksiyon oluşturun. Bu, kullanıcı girişi algılandığında çalışacak fonksiyon olacaktır.

    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. Fonksiyonun içinde, verilen actionName'in yeniden yükleme eylem adıyla eşleşip eşleşmediğini kontrol edin ve inputState'in UserInputState.Begin (başlangıç durumu) olduğundan emin olun. Bu önemlidir çünkü fonksiyon inputState her değiştiğinde çalışacak, ancak yeniden yükleme yalnızca bir kez gerçekleşmelidir.

    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. Kullanıcının yeniden yükleme yaptığında belirgin olması için, aracın TextureId değerini bir anlığına "rbxassetid://6593020923" olarak değiştirin ve ardından orijinal değeri olan "rbxassetid://92628145"'e geri döndürün.

    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end

Eylemi bağlayın

ContextActionService, belirli bir girişi algılamak için bir fonksiyonu bağlamak için BindAction fonksiyonunu kullanabilir. Bu fonksiyon birkaç argüman alır:

  • Eylemin adı.
  • Eylemi işleyen fonksiyon (aynı zamanda "geri çağırma" olarak da adlandırılır).
  • Bir dokunmatik ekran düğmesinin görüntülenip görüntülenmeyeceği.
  • Eylemle ilişkilendirilmesi gereken herhangi bir Enum.KeyCodes sayısı.

KeyCodes, klavye tuşları veya kontrolcü düğmeleri gibi farklı giriş düğümlerini temsil eden değerlerdir. Kodların tam listesi burada mevcuttur.

  1. Script'in en üstünde ContextActionService'i alın.

    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. toolEquipped fonksiyonunun içinde, BindAction'ı çağırın ve aşağıdaki argümanları geçirin:

    • Eylemin adı (RELOAD_ACTION)
    • Eylem işleyici (onAction)
    • Bir dokunmatik düğme oluşturmak için bir değer (true)
    • Algılamak için bir tuş basışı (Enum.KeyCode.R)
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
  3. Aracı takıp klavyenizdeki R tuşuna basarak oyun testi yapın. Sırt çantası simgesi, silahın yeniden yüklendiğini belirtmek için geçici olarak bir bekleme sembolüne dönüşmelidir:

Eylemi bağlamayı kaldırın

Kullanıcı aracı çıkardığında, eylemin bağlanmaması gerekir, böylece araç takılmadan yeniden yükleme yapılamaz.

  1. toolUnequipped adında yeni bir fonksiyon oluşturun ve UnbindAction'ı çağırarak eylem adını geçirin.

    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  2. toolUnequipped fonksiyonunu Unequipped olayına bağlayarak olay tetiklendiğinde fonksiyonun çalışmasını sağlayın.

    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Unequipped:Connect(toolUnequipped)
    tool.Activated:Connect(toolActivated)
  3. Her şeyin doğru çalıştığını doğrulamak için oyun testi yapın. Araç takılıyken yeniden yükleme yapabilmeli, ancak araç çıkarıldığında yapamamalısınız.

Yeniden yükleme animasyonunuz artık tamamlandı - ekstra bir zorluk için, her blaster ateşlendiğinde bir mermi sayacını geri saymayı deneyin. Ardından, silahın mermisi kalmadığında toolActivated fonksiyonunu devre dışı bırakabilir ve yeniden yükleme animasyonu tamamlandığında tekrar etkinleştirebilirsiniz.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.