Orta seviye öğreticiler

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 alanda nesnelere yaklaştıklarında görünen etkileşimli yakınlık istemleri oluşturabilir ve ardından kullanıcı girdisine dayalı olarak eylemleri tetikleyebilirsiniz.

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

Deneyimin ana sayfasındaki Stüdyo'da düzenleme seçeneği

Bir istem oluşturun

Ekranda görünen istemler, bir ProximityPrompt nesnesi ile bir Attachment, BasePart veya Model'a bağlandığında oluşturulur.

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

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

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

  4. Yeni eklenen bağlantının 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şmaktadır:

  • ObjectText — Etkileşime girilen nesnenin isteğe bağlı ismi.
  • ActionText — Kullanıcıya gösterilen isteğe bağlı eylem ismi.
  • KeyboardKeyCode — İstemi tetikleyecek olan klavye tuşu.
  • GamepadKeyCode — İstemi tetikleyecek olan gamepad butonu.

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.

Etkileşim 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 kilidinin açılması gerektiği için, HoldDuration özelliğini 4 olarak değiştirin.

Bir eylemi uygulama

İstem olaylarını tespit etmenin en iyi yolu ProximityPromptService kullanmaktır — bu, her istem nesnesine bir script eklemeden olayı merkezi olarak tespit etmenizi sağlar.

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


local ProximityPromptService = game:GetService("ProximityPromptService")
-- İstem tetiklendiğinde tespit et
local function onPromptTriggered(promptObject, player)
end
-- İstem tutma başladığında tespit et
local function onPromptHoldBegan(promptObject, player)
end
-- İstem tutma sona erdiğinde tespit et
local function onPromptHoldEnded(promptObject, player)
end
-- İstem olaylarını işleme fonksiyonlarına bağlayın
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
OlayAçıklama
PromptTriggeredBir kullanıcının bir istemle etkileşime girdiğinde tetiklenir (sonrasında sıfırdan büyük HoldDuration süresine sahip bir istem için).
PromptButtonHoldBeganBir kullanıcının sıfırdan büyük HoldDuration süresine sahip bir istemle etkileşime girmeye başladığında tetiklenir.
PromptButtonHoldEndedBir kullanıcının sıfırdan büyük HoldDuration süresine sahip bir istemle etkileşimi durdurduğunda tetiklenir.

Dungeon Delve projesinde, bu olaylar ServerScriptService içindeki PromptEvents scripti ile yönetilmektedir.

Scriptin içinde, yukarıdaki olaylar basitçe ObjectActions ModuleScript içinde yer alan fonksiyonları çağırır, bu da ServerScriptService içinde yer almaktadır.


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

Yakınlık istemleri, oyun içi nesne etkileşimleri için uygun ve özelleştirilebilir bir çözümdür. İstem davranışını kontrol etmenin daha fazla yolunu keşfetmek 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.