Empty
Empty
Empty
RunService 可以用于动画。它还允许处理实时更新和逐帧控制。
事件 | 详情 |
---|---|
Heartbeat | 每帧在物理模拟完成后触发。 |
PostSimulation | 每帧在物理模拟完成后触发。 |
PreAnimation | 每帧在物理模拟之前但在渲染之后触发。 |
PreRender | 每帧在渲染之前触发。 |
PreSimulation | 每帧在物理模拟之前触发。 |
RenderStepped | 每帧在渲染之前触发。 |
Stepped | 每帧在物理模拟之前触发。 |
RunService 与 wait()
Empty
Empty
Empty
local part = Instance.new("Part")
part.Size = Vector3.new(4, 4, 4)
part.Position = Vector3.new(0, 5, 0)
part.Anchored = true
part.Parent = workspace
local speed = 5 -- studs per second
spawn(function()
while true do
wait(0.033) -- Approximate wait time for 30 FPS (Frame per second)
part.Position = part.Position + Vector3.new(speed * 0.033, 0, 0)
end
end)
wait() 的精确度较低,时间可能会有所波动,导致动画不太流畅。
RunService 与 TweenService
Empty
Empty
Empty
- 适用于平滑、可预测的动画。
- 最佳用于简单的属性过渡。
- 内置的缓动样式使用方便。
- TweenService 利用类似 RunService 的机制来确保动画平滑,包括使用 delta time 进行属性的帧独立插值。
Empty
Empty
Empty
- 适用于实时动态更新。
- 允许逐帧控制。
- 可用于动画之外的各种任务。
- RenderStepped 与渲染过程相关联,该过程在客户端发生,因此仅限于 LocalScripts。
RunService 使用案例示例
示例 | 详情 |
---|---|
Custom Render Logic | 3D GUIs: 创建并更新必须跟随游戏世界中的部件或角色的 3D GUI 元素。 |
Player-Exclusive Features | 本地游戏机制:实现仅影响本地玩家的功能或机制,例如本地独有的粒子效果或照明变化。 |
Camera Manipulation | 动态相机控制:根据玩家操作或游戏事件平滑地更新相机的位置、方向或焦点,以创建更具沉浸感的体验。 |