如何使 Workspace 中的一个部件变得可见并开始移动?

我正在尝试使用的按钮位于 StarterGUI 中。不知道这是否有帮助。我对编写脚本相当新,不过看到了另一篇类似的帖子并使用了那段代码。下面是我在 LocalScript 中的代码:

local MarketplaceService = game:GetService("MarketplaceService")
local player = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PurchaseEvent = ReplicatedStorage.PurchaseEvent
local productID = 1218445531


script.Parent.MouseButton1Click:Connect(function()

    PurchaseEvent:FireServer(productID)
end)

if MarketplaceService:PlayerOwnsAsset(1218445531) then
    -- 这里就是应该发生的事情
end

原文链接 https://stackoverflow.com/questions/69875084

点赞
stackoverflow用户13429318
stackoverflow用户13429318

首先,您需要获取对象的引用。一种方法是使用类似 local part = workspace:WaitForChild("PartName") 的方式。

要使其可见,您需要将透明度设置为0。如果您不希望玩家穿过该部件,您可能还需要使用 CanColide 打开碰撞检测。建议将该部件定位以防止其掉落。

part.Transparency = 0; -- 使其可见
part.CanColide = true; -- 确保其他对象无法穿过它
part.Anchored = true; -- 防止物体掉落

有许多方法可以使一个部分移动。如果该部分应该从一个地方移动到另一个地方,并且只有一个目的地,则可以使用缓动动画(参见 TweenService)。

另一种方法是使用一个运行循环,在每个帧上更改位置(参见 RunService.Heartbeat)。例如,

local keepMoving = true; -- 将此更改为false以停止移动
local RunService = game:GetService("RunService");
local direction = Vector3.new(0, 1, 0); -- 将此更改为任何您想要的
while (keepMoving) do
    local timePassed = RunService.Heartbeat:Wait(); -- 等待一帧,大约0.016秒。
    part.Position += direction * timePassed; -- 沿着指定的方向移动部件
end

这将每秒将 part 向上移动1个单位。

2021-11-07 19:34:35