问题在于你正在做的工作
RunServiceEvent
。似乎你正试图确保Tween结束后零件位于目标位置,然后删除
RenderStepped
不幸的是,
RunServiceEvent = nil
不会为您删除它-它将对象与该名称解除绑定,但不会从内存中删除对象。
这意味着一秒钟后,您的脚本将不断地将零件移动到目标位置,有效地将其锁定到位。
好消息是,你根本不需要那一点!如果完全删除该部分,您的脚本可以正常工作:
local tweenService = game:GetService("TweenService")
local runService = game:GetService("RunService")
local player = game.Players.LocalPlayer
local RunServiceEvent = nil
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
function SpawnPart()
local part = Instance.new("Part")
part.Anchored = true
part.Parent = game.Workspace.Clutter.Coins
local startPos = Vector3.new(0, 2, 0)
part.Position = startPos
local TargetPosition = Vector3.new(5, 2, 0)
local Tween = tweenService:Create(part, tweenInfo, {Position = TargetPosition})
Tween:Play()
end
player:WaitForChild("PlayerGui"):WaitForChild("ScreenGui"):WaitForChild("TextButton").Activated:Connect(SpawnPart)
如果你真的想确保这个部分最终出现在正确的位置,你也可以让你的脚本等到Tween完成使用
task.delay
:
local tweenService = game:GetService("TweenService")
local runService = game:GetService("RunService")
local player = game.Players.LocalPlayer
local RunServiceEvent = nil
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
function SpawnPart()
local part = Instance.new("Part")
part.Anchored = true
part.Parent = game.Workspace.Clutter.Coins
local startPos = Vector3.new(0, 2, 0)
part.Position = startPos
local TargetPosition = Vector3.new(5, 2, 0)
local Tween = tweenService:Create(part, tweenInfo, {Position = TargetPosition})
Tween:Play()
task.delay(tweenInfo.Time, function()
part.Position = TargetPosition
end)
end
player:WaitForChild("PlayerGui"):WaitForChild("ScreenGui"):WaitForChild("TextButton").Activated:Connect(SpawnPart)