Kullanıcılar 3D alanındaki nesnelerin yaklaştığında görüntülenen etkileşimli yakınlık promutları oluşturabilirsiniz, sonra kullanıcının girişine eylemleri tetikleyebilirsiniz.
Bu öğretici Dungeon Delve projesini bir sergi olarak kullanır. Takip etmek için Studio'da açın, böylece devam edebilirsiniz.
Bir İşaret Oluştur
Ekran üzeri talimatlar bir ProximityPrompt nesneyi Attachment , BasePart veya 2> Class.Model2> ile bağlantılı oluşturur.
3D görüşündeki PrisonDoor modelini seçin veya Explorer'dan ( Workspace → PromptObjects → 1>PrisonDoor1> ) .
Ağacını genişlet ve Kapı nesnini seç.
Bir Attachment ın üstünde bir istem oluşturmak, nokta etkileşiminin gerçekleştiği yere daha fazla kontrol sağlar, onu doğrudan bir parçaya/modelle yerleştirmekten daha fazla. Yeni bir Attachment ı ekleyin ve ismini PromptAmount olarak değiştirin.
Yeni bağlantının Position özelliğini bulun ve -2.25 , -0.5 , - 1> 0.51> . Bu, kapının kilit deliğinin önünde hareket edecektir.
Hover over PromptAmount and insert a new YakınlıkPrompt object.
Kullanıcı Arayüzü
İsteklerin üç temel öğesi vardır, her biri aşağıdaki özellikler tarafından kontrol edilebilir:
- ObjektText — Etkileşimde bulunan objenin bir ismi.
- ActionText — Kullanıcıya gösterilen opzional bir eylem ismi.
- KeyboardKeyCode — İşaretçiyi tetikleyecek klavye tuşu.
- GamepadKeyCode — İndirim için kullanılan oyun konsolu butonu.
Hapishane kapısının görünümünü özelleştirmek için aşağıdaki değişiklikleri yapın:
Özellikler penceresindeki ObjektMetni özelliğini bulun ve Kapı yazın.
For the ActionText property, type in Kilidi Seç .
Aktifleştirme Mesafesi
İşaretler, kullanıcının karakteri kullanımı, öğretmenin MaxActivationDistance menzili içinde hareket ettiğinde görünür.
Varsayılan değer çoğu durumda iyi çalışır, ancak kullanıcı etkileşimini kilite yaklaştırmak için Maksimum Aktivasyon Mesafesi 'i 4 'e değiştirerek kullanıcı etkileşimini daha da yakınlaştırabilirsiniz.
Süre Tutma
Süre Tutma Süresi özelliğinin değeri, alınan mesajın eyleminin ne kadar hızlı olduğunu belirler, saniye olarak. Bu kapıyı açmak için seçilmesi gerektiğinden, Süre Tutma Süresi özelliğini 4 olarak değiştirin.
Bir Eylem Gerçekleştir
Etkinleştirme olaylarını tespit etmenin en iyi yolu, ProximityPromptService ile - böylece her etkinleştirme nesnesine bir senaryo bağlamadan merkezi olarak etkinleştirme olaylarını tespit edebilirsiniz.
Ana çerçeve şu şekilde olmalıdır:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- İndirmeyi başlatırken tetiklenen zamanı algıla
local function onPromptTriggered(promptObject, player)
end
-- İndirmeyi başlatırken beklenen süreyi tespit et
local function onPromptHoldBegan(promptObject, player)
end
-- İndirmeyi durdurma eylemi bitince algılayın
local function onPromptHoldEnded(promptObject, player)
end
-- İşlevleri işleyen alanlara bağlantı olayları
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Etkinlik | Açıklama |
---|---|
PromptTriggered | Bir kullanıcı bir çağrıyla etkileşim kurduğunda ateşlenir (sonra bir çağrının süresi için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için süre için s |
PromptButtonHoldBegan | Kullanıcı, HoldDuration olmayan bir davetiyeyle etkileşime geçtiğinde ateşlenir. |
PromptButtonHoldEnded | Kullanıcı, HoldDuration olmayan bir istemle etkileşimini sonladığında ateş eder |
Dungeon Delve projesinde, bu olaylar SunucuScriptService içindeki PromptEvents kripti tarafından yönetilir.
Script'in içinde, aşağıdaki olaylar ObjectActions ModuleScript içindeki işlevleri çağırır, ayrıca ServerScriptService içinde de bulunur.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- İndirmeyi başlatırken tetiklenen zamanı algıla
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- İndirmeyi başlatırken beklenen süreyi tespit et
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- İndirmeyi durdurma eylemi bitince algılayın
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- İşlevleri işleyen alanlara bağlantı olayları
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Yakınlık alanı promutları oyun içi nesnelerin etileşim için uygun ve özelleştirilebilir bir çözümdür. İşlevi kontrol etmek için ProximityPrompt ve ProximityPromptService referans sayfalarını kontrol edin, böylece promt davranışını daha da kontrol etmek için kreatif olarak