求助:如何用Roblox Studio的Proximity Prompt实现模型隐藏/透明?
解决Roblox Studio中Proximity Prompt不显示及模型隐藏问题
一、先修复Proximity Prompt不显示的问题
Proximity Prompt必须挂载在BasePart(如Part、MeshPart)上才能正常显示,直接放在模型上无效。按以下步骤排查:
- 将Proximity Prompt拖到模型内的任意一个Part上
- 检查Prompt的核心属性:
- 确保
Enabled设为true - 调大
MaxActivationDistance(比如设为10),保证你处于触发范围内 - 新手测试可暂时把
RequiresLineOfSight设为false,避免被场景物体遮挡
- 确保
- 修正
WaitForChild的使用:如果脚本里获取Prompt,要指向挂载Prompt的Part,比如模型里的Part叫"CorePart",写法应为script.Parent.CorePart:WaitForChild("ProximityPrompt"),不要直接在模型对象上调用WaitForChild
二、实现模型隐藏/透明的脚本
方案1:切换模型所有部件的透明度
把**服务器脚本(蓝色图标)**放在挂载了Proximity Prompt的Part上:
local proximityPrompt = script.Parent:WaitForChild("ProximityPrompt") local targetModel = script.Parent.Parent -- 假设Part的父对象就是要隐藏的模型 -- 绑定触发事件 proximityPrompt.Triggered:Connect(function() -- 遍历模型下所有部件,切换透明度 for _, part in ipairs(targetModel:GetDescendants()) do if part:IsA("BasePart") then part.Transparency = part.Transparency == 0 and 1 or 0 end end end)
方案2:隐藏带Humanoid的模型(如NPC)
如果目标模型是带Humanoid的角色,可直接切换模型的Enabled属性:
local proximityPrompt = script.Parent:WaitForChild("ProximityPrompt") local targetModel = script.Parent.Parent proximityPrompt.Triggered:Connect(function() targetModel.Enabled = not targetModel.Enabled end)
三、常见坑点
- 脚本类型错误:必须用服务器脚本,不要用本地脚本,Proximity Prompt的
Triggered事件在服务器端触发 - 脚本位置错误:脚本要放在Workspace内的部件上,不要放在ServerScriptService(新手阶段无需复杂架构)
- 模型层级错误:确保
targetModel的路径正确,比如如果Part在模型的子文件夹里,要调整script.Parent.Parent为对应路径
内容的提问来源于stack exchange,提问作者Senior Hamster
相关产品推荐
相关产品推荐

