所以我正在为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()
您的补间代码看起来很好。
可能只是您定义的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)
您的滑动门需要确保在补间的开始和结束时方向相同。
希望这可以帮助。