gpt4 book ai didi

lua - 触摸功能 Roblox Studio

转载 作者:行者123 更新时间:2023-12-04 23:13:14 24 4
gpt4 key购买 nike

我正在 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 秒内在其上行走,让玩家有时间行走而不恢复颜色。这是正确的方法吗,如果是这样,我将如何去做。是否可以覆盖触摸功能?

这是它的样子(后来我稍微更改了代码,包括颜色等......但基本问题仍然存在)

enter image description here

最佳答案

您可以尝试使用 IsRegion3Empty函数,它应该更可靠地返回是否有任何玩家站在平台正上方。它有两个优点:

  1. 它可以调整为不如 TouchedTouchEnded 敏感,因为不需要与平台直接接触,只要播放器是在平台上方的一些小区域内。

  2. 它可以处理多个玩家。如果您要连接 TouchEnded 来重置颜色,那么如果两个玩家站在平台上,然后一个玩家离开,即使玩家仍然站在平台上,颜色也会重置。通过检查平台上方的区域是否为空,只有当所有玩家离开平台时才会重置颜色。

上述方法将在任何部分进入该区域时触发。要将其限制为玩家,您可以改为使用 FindPartsInRegion3函数并检查该部分是否具有 Humanoid 父级。

关于lua - 触摸功能 Roblox Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com