为什么我的门在使用TweenService()的ROBLOX Studio中出现意外行为?

问题描述 投票:0回答:1

所以我正在为ROBLOX构建一个Maze Runner游戏,我已经开始编写门版,所以我利用ROBLOX内置的“TweenService()”来完成它。从理论上讲,门应像迷宫跑者一样滑入墙壁。但这种情况一直在发生,我不知道为什么!它们旋转到间隙而不是滑动。我会展示一个图像,但我不能。 | =墙V =门。应该发生什么|> <|发生了什么| ^^ |

我的代码:

        TweenService = game:GetService("TweenService")
    Door = script.Parent.Door2
    Door1 = Door:WaitForChild("Door1")
    Door2 = Door:WaitForChild("Door2")
    local TweenInformationIn = TweenInfo.new(

        6,
        Enum.EasingStyle.Sine,
        Enum.EasingDirection.In,
        0,
        false,
        0
    )

    local Door1Close = {CFrame = CFrame.new(1226.993, 131.187, -769.185)}
    local Door2Close = {CFrame = CFrame.new(1226.993, 131.187, -814.271)}
    local Door1Open = {CFrame = CFrame.new(1226.993, 131.187, -749.831)}
    local Door2Open = {CFrame = CFrame.new(1226.993, 131.187, -834.331)}
    local Tween1Open = TweenService:Create(Door1, TweenInformationIn, Door1Open)
    local Tween2Open =  TweenService:Create(Door2, TweenInformationIn,Door2Open)
    local TweenClose =  TweenService:Create(Door1, TweenInformationIn, Door1Close)
    local Tween2Close =  TweenService:Create(Door2,TweenInformationIn,Door2Close)

    Tween1Open:Play()
    Tween2Open:Play()
lua roblox
1个回答
0
投票

您的补间代码看起来很好。

可能只是您定义的CFrame缺少轮换信息。在你的例子中,你所做的补间试图将门1移动到Position (1226.993, 131.187, -769.185)Orientation (0, 0, 0)

您需要检查门的“方向”属性,并确保在最终的CFrame中保留“方向”。您可以通过将其与另一个CFrame相乘来将该旋转应用于该位置。

两个简单的例子是:

-- create a door that swings close
local Door1OpenPos  = CFrame.new(0, 5, 10) * CFrame.fromEulerAnglesXYZ(0, 90, 0)
local Door1ClosePos = CFrame.new(0, 5, 15) * CFrame.fromEulerAnglesXYZ(0,  0, 0)

-- create a door that slides close
local Door2OpenPos  = CFrame.new(20, 5, 0) * CFrame.fromEulerAnglesXYZ(0, 90, 0)
local Door2ClosePos = CFrame.new(30, 5, 0) * CFrame.fromEulerAnglesXYZ(0, 90, 0)

您的滑动门需要确保在补间的开始和结束时方向相同。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.