Roblox CFrame lookVector не является движущейся частью?

Недавно я много работал с механикой 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 ответа

Способ исправить это довольно просто.

Как сказал Ахмад, 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 в нем, я не уверен, если это так или нет, но если реактивный ранец появляется перед туловищем, тогда замените weld.C0 = CFrame.new(0, 0, -5) в weld.C0 = CFrame.new(0, 0, 5),

Надеюсь, мой ответ поможет!

moveTo используется для моделей, которые не имеют первичной части. Который может быть неточным. Вместо этого используйте :SetPrimaryPartCFrame() также вы добавляли Position+CFrame(это могло вызвать ошибку, вы проверяли вывод?)

Другие вопросы по тегам