#lua #roblox #tween
#lua #roblox #анимация
Вопрос:
Я практиковался в настройке на Lua, и я изо всех сил пытаюсь понять, почему я не могу заставить свою платформу переместиться назад и на четвертое место между начальной и конечной платформами. Сначала я покажу код
-- Starting Variables
local TweenService = game:GetService("TweenService")
local group = game.Workspace.MovingPlatform
-- Group Variables
local part = group.Platform
local start = group.Check1
local finish = group.Check2
-- Vectors
local destination = Vector3.new(start.Position.x,start.Position.y, start.Position.z)
-- Platform Tween Info
local info = TweenInfo.new(
1, --Length (seconds)
Enum.EasingStyle.Linear,
Enum.EasingDirection.Out,
-1,--Times To Be Repeated
true,
0 --Delay
)
-- Where the destination is
local Goals = {
Position = Vector3.new(destination)
}
-- Makes it go
local MovePart = TweenService:Create(part, info, Goals)
MovePart:Play()
-- Debugging
local startPosition = Vector3.new(start.Position.x, start.Position.y, start.Position.z)
local endPosition = Vector3.new(finish.Position.x, finish.Position.y, finish.Position.z)
local partPosition = Vector3.new(part.Position.x, part.Position.y, part.Position.z)
while true do
print("Start Position: "..tostring(startPosition))
print("Destination: "..tostring(destination))
print("End Position: "..tostring(endPosition))
print("Platform Position: "..tostring(partPosition))
print("--------------")
wait(3)
end
Платформа переместится один раз, а затем начнет выходить из строя и двигаться куда угодно, и в конечном итоге остановится на полу, двигаясь назад и на четвертое место, но не в правильном месте. Я пробовал отладку, чтобы увидеть, изменилось ли каким-либо образом расположение какой-либо из моих частей, но все осталось прежним. Возможно, я неправильно регистрирую позиции, но, тем не менее, есть какие-либо намеки на то, что я могу делать неправильно?
Ответ №1:
Возможно, вы захотите попробовать использовать CFrame вместо Position при перемещении объектов. Кроме того, Part.Position — это Vector3, поэтому нет смысла создавать новый Vector3 для Vector3.
Попробуйте что-то вроде этого:
-- Starting Variables
local TweenService = game:GetService("TweenService")
local group = game.Workspace.MovingPlatform
-- Group Variables
local part = group.Platform
local start = group.Check1
local finish = group.Check2
-- Set the platform part to start at Check1
part.CFrame = start.CFrame
-- Platform Tween Info
local info = TweenInfo.new(
1, --Length (seconds)
Enum.EasingStyle.Linear,
Enum.EasingDirection.Out,
-1,--Times To Be Repeated
true,
0 --Delay
)
-- Where the destination is
local Goals = {
CFrame = finish.CFrame -- We want it to end at the finish part's position
}
-- Makes it go
local MovePart = TweenService:Create(part, info, Goals)
MovePart:Play()