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

person Starflyer    schedule 09.10.2018    source источник
comment
Вы уверены, что позиция еще не сохранена в Torso.Position, поскольку я почти уверен, что она находится в одном из конечных номеров.   -  person Taazar    schedule 09.10.2018
comment
Что вы имеете в виду под конечными числами @Taazar Извините, что не понимаю, так как я новичок в написании сценариев.   -  person Starflyer    schedule 10.10.2018


Ответы (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).

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

person Community    schedule 11.11.2018

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

person Ahmad Said    schedule 13.10.2018