Yakınlık istemleri

*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ılar 3D alandaki nesnelere yaklaştıklarında görünen etkileşimli yakınlık istemleri oluşturabilir ve ardından kullanıcı girdisi ile eylemleri tetikleyebilirsiniz.

Bu eğitim, Dungeon Delve projesini bir vitrin olarak kullanmaktadır. Devam etmeden önce, bunu Studio'da açın.

Oyunun ana sayfasından Studio'da düzenleme seçeneği

Bir istem oluşturun

Ekrandaki istemler, bir ProximityPrompt nesnesinin bir Attachment, BasePart veya Model nesnesine bağlı olarak oluşturulur.

  1. 3D görünümde veya Explorer'dan (Workspace → PromptObjects → PrisonDoor) PrisonDoor modelini seçin.

  2. Ağaç yapısını genişletin ve Door nesnesini seçin.

  3. Bir istemi Attachment üzerine yerleştirmek, etkileşim noktasının nerede gerçekleşeceği üzerinde daha fazla kontrol sağlar; doğrudan parça/model üzerine yerleştirmek yerine. Yeni bir Attachment ekleyin ve adını PromptAttachment olarak değiştirin.

  4. Yeni eklemenin Position özelliğini bulun ve -2.25, -0.5, -0.5 olarak ayarlayın. Bu, kapının anahtar deliğinin önüne taşınmasını sağlar.

  5. PromptAttachment üzerine gelin ve yeni bir ProximityPrompt nesnesi ekleyin.

İstem görünümü

İstemler, aşağıdaki özelliklerle kontrol edilebilen üç ana öğeden oluşur:

  • ObjectText — Etkileşimde bulunulan nesne için isteğe bağlı bir ad.
  • ActionText — Kullanıcıya gösterilen isteğe bağlı bir eylem adı.
  • KeyboardKeyCode — İstemi tetikleyecek olan klavye tuşu.
  • GamepadKeyCode — İstemi tetikleyecek olan oyun kumandası düğmesi.

Hapishane kapısı isteminin görünümünü özelleştirmek için aşağıdaki değişiklikleri yapın:

  1. Properties penceresinde ObjectText özelliğini bulun ve Kapı yazın.

  2. ActionText özelliği için Kilit Aç yazın.

Etkinleştirme mesafesi

İstemler, kullanıcının karakteri istem nesnesinin ebeveyninin tanımlı MaxActivationDistance aralığına girdiğinde görünür.

Varsayılan değer çoğu durumda iyi çalışır, ancak kullanıcı etkileşimini kilide daha yakın hale getirmek için MaxActivationDistance değerini 4 olarak değiştirebilirsiniz.

Tutma süresi

HoldDuration özellik değeri, istemin eyleminin tetiklenme hızını belirler, saniye cinsinden. Bu kapının açılması için kilitlenmesi gerektiğinden, HoldDuration özelliğini 4 olarak değiştirin.

Bir eylemi uygulayın

İstem olaylarını algılamanın en iyi yolu ProximityPromptService kullanmaktır — bu, her istem nesnesine bir betik eklemeden olayları merkezi olarak algılamanızı sağlar.

Temel bir çerçeve aşağıdaki gibidir:

local ProximityPromptService = game:GetService("ProximityPromptService")
-- İstem tetiklendiğinde algıla
local function onPromptTriggered(promptObject, player)
end
-- İstem tutma başladığında algıla
local function onPromptHoldBegan(promptObject, player)
end
-- İstem tutma sona erdiğinde algıla
local function onPromptHoldEnded(promptObject, player)
end
-- İstem olaylarını işleme fonksiyonlarına bağla
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
OlayAçıklama
PromptTriggeredKullanıcı bir istemle etkileşime girdiğinde tetiklenir (sonrasında sıfırdan büyük HoldDuration süresi için).
PromptButtonHoldBeganKullanıcı sıfırdan büyük HoldDuration olan bir istemle etkileşime girmeye başladığında tetiklenir.
PromptButtonHoldEndedKullanıcı sıfırdan büyük HoldDuration olan bir istemle etkileşimi durdurduğunda tetiklenir.

Dungeon Delve projesinde, bu olaylar ServerScriptService içindeki PromptEvents betiği tarafından yönetilmektedir.

Betiğin içinde, yukarıdaki olaylar basitçe ObjectActions ModuleScript içindeki fonksiyonları çağırır; bu da ServerScriptService içinde bulunmaktadır.

local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- İstem tetiklendiğinde algıla
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- İstem tutma başladığında algıla
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- İstem tutma sona erdiğinde algıla
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- İstem olaylarını işleme fonksiyonlarına bağla
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

Yakınlık istemleri, oyun içi nesne etkileşimi için kullanışlı ve özelleştirilebilir bir çözümdür. İstem davranışını kontrol etmenin daha fazla yolu için ProximityPrompt ve ProximityPromptService referans sayfalarına göz atın ve yaratıcı ilham için Dungeon Delve içindeki diğer etkileşimli nesneleri keşfedin.

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