lua - 触摸功能 Roblox Studio
问题描述
我正在 Roblox Studio 上编写一个 obby。在这个 obby 中,我有角色跳上的部分(这些部分大约是 10 x 10 个螺柱)。
我想实现这一点,而角色在一部分,那部分会改变颜色。
local platform = script.parent
local function changeColor(part)
local humanoid = part.Parent:FindFirstChild(‘Humanoid’)
if humanoid then
part.BrickColor = BrickColor.new(‘Bright red’)
end
end
local function restoreColor(part)
local humanoid = part.Parent:FindFirstChild(‘Humanoid’)
if humanoid then
part.BrickColor = BrickColor.new(‘Grey’)
end
end
platform.Touched:connect(changeColor)
platform.TouchEnded:connect(restoreColor)
这样做的问题是,当角色在零件上行走时,零件会随着每一步从灰色变为红色并变回来。我希望该部分在玩家使用它期间保持红色。所以我想要这个功能来检查玩家是否在最后说的 0.5 秒内走过它,让玩家有时间行走而不恢复颜色。这是正确的方法吗?如果是,我将如何去做。是否可以覆盖触摸功能?
这是它的样子(我后来稍微更改了代码,包括颜色等......但基本问题仍然存在)
解决方案
您可以尝试使用IsRegion3Empty函数,它应该更可靠地返回是否有任何玩家站在平台正上方。它有两个优点:
只要玩家在平台上方的某个小区域内,它就可以调整为比
Touched
和更不敏感,因为不需要直接接触平台。TouchEnded
它可以处理多个玩家。如果你要连接
TouchEnded
重置颜色,那么如果两个玩家站在平台上,一个离开,即使玩家仍然站在平台上,颜色也会被重置。通过检查平台上方区域是否为空,只有当所有玩家离开平台时,颜色才会被重置。
上述方法将在任何部件进入该区域时触发。要将其限制为玩家,您可以改为使用FindPartsInRegion3函数并检查部件是否具有 Humanoid 父级。
推荐阅读
- python - Pytest 未在子目录中找到所有测试
- java - Eclipse 问题:调试时触发单元测试,但运行时未触发
- android - Android Studio - 如何从片段中停止 handler.postDelayed?
- amazon-web-services - aws管理控制台在哪里修改弹性beantalk健康检查url?
- android - 来自私有 bitbucket 存储库的 Android 模块依赖项
- python - 我将如何在python中每13行找到最大值?
- flutter - 如何使用flutter Web在listview中动态添加下拉按钮或删除下拉列表?
- ruby - 如何从 IRB 控制台使用 RSpec?
- python - 从按钮功能更新 many2one 域过滤器 [odoo12]
- python - 如何监听传入的 jdbc 连接?