【问题标题】:Roblox CFrame lookVector isn't moving part?Roblox CFrame lookVector 不是移动部件?
【发布时间】:2019-03-13 16:36:36
【问题描述】:

我最近在编写脚本时一直在使用 CFrame 机制,但我对此有点卡住了。

即使在使用.lookVector,甚至Vector3 之后,Jetpack 模型的位置仍然与躯干的位置相同,而不是躯干后面的 5 个(* -5)

这是我目前的代码:

local player = script.Parent
local jetpack = game.ReplicatedStorage.Jetpack
local jetpackClone = jetpack:Clone()
jetpackClone.PrimaryPart = jetpackClone.Core
jetpackClone.Parent = player
jetpackClone:moveTo(player.Torso.Position + player.Torso.CFrame.lookVector * -5)

local weld = Instance.new("Motor6D")
weld.Parent = jetpackClone.Core
weld.Part0 = jetpackClone.Core
weld.Part1 = player.Torso

【问题讨论】:

  • 您确定该位置尚未存储在Torso.Position 中吗,因为我很确定它位于尾随数字之一中。
  • 尾随数字是什么意思@Taazar 很抱歉不明白,因为我对脚本很陌生。

标签: math lua roblox


【解决方案1】:

解决这个问题的方法很简单。

就像 Ahmad 所说,moveTo 用于没有主要部分的模型。但不仅如此。

Ahmad 忘记的一件事是“lookVector”不是 CFrame,而是 Vector3。

在这个片段中,你做到了

moveTo(player.Torso.Position + player.Torso.CFrame.lookVector * -5)

那很好,如果你不使用 Vector3 的数值。为了解决这个问题,你的代码应该是

local player = script.Parent
local jetpack = game.ReplicatedStorage.Jetpack;
local jetpackClone = jetpack:Clone();
jetpackClone.PrimaryPart = jetpackClone.Core;
jetpackClone.Parent = player; -- Is the 'Player' a Player, or a character??

local weld = Instance.new("Weld", player.Torso) -- We use 'Weld' here, instead of Motor6D
weld.Part1 = jetpackClone.Core;
weld.Part0 = player.Torso;
weld.C0 = CFrame.new(0, 0, -5); -- We use the C0 property of Weld's

这应该可以将喷气背包焊接到你的躯干上。虽然,我会检查其中的 CFrame 是否正确,我不确定是否正确,但如果喷气背包出现在你的躯干前面,请将 weld.C0 = CFrame.new(0, 0, -5) 替换为 weld.C0 = CFrame.new(0, 0, 5)

希望我的回答有帮助!

【讨论】:

    【解决方案2】:

    moveTo 用于没有主要部分的模型。这可能是不准确的。而是使用:SetPrimaryPartCFrame(),你也在添加Position+CFrame(你检查输出会导致错误吗?)

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 2018-02-28
      • 2021-12-20
      • 2023-02-02
      • 2022-09-25
      • 2011-03-21
      • 2022-11-18
      • 2019-02-17
      • 2021-12-25
      相关资源
      最近更新 更多