Roblox CFrame lookVector 不移动部件?

我最近在脚本编写时使用了许多 CFrame 技巧,但我却卡住了。

即使使用了 .lookVector 或者 Vector3,喷气背包模型的位置仍然等于躯干的位置,而不是在躯干后面 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
点赞
用户10496478
用户10496478

moveTo 用于没有主部件的模型。这可能不准确。相反,使用 :SetPrimaryPartCFrame()。另外,您正在添加 Position+CFrame(这将导致错误,您有检查输出吗?)。

2018-10-13 13:33:02
用户88888888
用户88888888

修复这个问题非常简单。

正如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; -- 玩家是玩家还是角色??

local weld = Instance.new("Weld", player.Torso) -- 这里我们使用'Weld',而不是'Motor6D'
weld.Part1 = jetpackClone.Core;
weld.Part0 = player.Torso;
weld.C0 = CFrame.new(0, 0, -5); -- 我们使用Weld的C0属性

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

希望我的回答有所帮助!

2018-11-11 17:17:08