Roblox Lua пытается настроить часть для перемещения назад и на четвертое место, как платформа

#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()