Orta seviye öğreticiler

Kullanıcı Girdi Algılama

*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 eylemlerle bağlamak, kullanıcılara deneyimin özellikleri üzerinde çok daha iyi ve sezgisel bir kontrol sağlar. Bu öğreticide, bir yeniden yükleme eylemini belirli bir tuşa bağlayacaksınız.

Başlarken

Bu öğretici, Oyun Araçları Oluştur bölümünde oluşturulan Blaster aracını kullanmaktadır. Bu talimatları izleyerek aracı oluşturabilir veya Blaster modelini indirip StarterPack'e ekleyebilirsiniz.

Modeller, herhangi bir deneyimde kullanılmak üzere envanterinize eklenebilir. Bir modeli deneyiminize 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çılır menünün Benim Modellerim seçeneğinde olduğundan emin olun.
  4. Blaster modelini seçin ve deneyime ekleyin.

Bir eylem işleyici oluşturma

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

  1. Blaster içindeki ToolController LocalScript dosyasını açın.

    Blaster aracındaki ToolController script'inin seçildiği Explorer görünümü

  2. Eylem için bir isim tutacak 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 adlı üç argüman alan onAction adlı 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. Fonksiyon içinde, verilen actionName'in yeniden yükleme eylem adıyla eşleştiğini kontrol edin ve inputState'in UserInputState.Begin (başlangıç durumu) olduğundan emin olun. Bu önemlidir çünkü fonksiyon inputState değiştiğinde her seferinde çalışacaktır, ancak yeniden yükleme yalnızca bir kez yapılmalıdır.


    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 işlemi yaptığını açıkça göstermek için, aracın TextureId değerini bir an için "rbxassetid://6593020923" olarak değiştirin ve ardından bunu orijinal değeri olan "rbxassetid://92628145" değerine geri değiştirin.


    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ğlama

ContextActionService, bir BindAction fonksiyonu kullanarak belirli bir girişi bir fonksiyona bağlamak için kullanılabilir. 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 butonunun gösterilip gösterilmeyeceği.
  • Eylemle ilişkilendirilecek ve algılanacak herhangi bir Enum.KeyCodes değeri.

KeyCodes, klavye tuşları veya denetleyici butonları gibi farklı giriş düğmelerini temsil eden değerlerdir. Tüm kodların listesini buradan bulabilirsiniz.

  1. Script'in başında ContextActionService'i alın.


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

    • Eylemin adı (RELOAD_ACTION)
    • Eylem işleyici (onAction)
    • Bir dokunma butonu oluşturmak için bir değer (true)
    • Algılanacak bir tuş vuruşu (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ı giyin ve klavyenizdeki R tuşuna basarak oyun testini 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 geri alma

Kullanıcı aracı çıkardığında, eylemin geri alınması gerekir; böylece kullanıcı, araç giyilmeden yeniden yükleme yapamaz.

  1. toolUnequipped adında yeni bir fonksiyon oluşturun ve UnbindAction çağrısını yaparak 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ğlayın, böylece olay tetiklendiğinde fonksiyon çalışacaktır.


    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ı onaylamak için oyun testini yapın. Araç giyildiğinde yeniden yükleme yapabilmeli, ancak aracı çıkardığınızda yapamamalısınız.

Yeniden yükleme animasyonunuz şimdi tamamlandı - ek bir zorluk olarak, blaster her ateşlendiğinde bir mühimmat sayacını geri saymayı deneyin. O zaman, silahın mermisi kalmadığında toolActivated fonksiyonunu devre dışı bırakabilir ve ardından yeniden yükleme animasyonu bitince 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.