Roblox CFrame lookVector不动吗?

时间:2018-10-09 00:50:40

标签: math lua roblox

我最近在编写脚本时一直在与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

2 个答案:

答案 0 :(得分:0)

moveTo 用于没有主要部分的模型。这可能是不准确的。相反,您还使用:SetPrimaryPartCFrame()来添加Position + CFrame(这会导致您检查输出时出错吗?)

答案 1 :(得分:0)

解决此问题的方法非常简单。

就像艾哈迈德说的那样,moveTo用于没有主要部分的模型。不仅如此。

艾哈迈德忘记的一件事是'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是否正确,但不确定是否正确,但是如果jetpack出现在您的躯干前面,则将weld.C0 = CFrame.new(0, 0, -5)替换为weld.C0 = CFrame.new(0, 0, 5)

希望我的回答有帮助!