Roblox Studio (LUA) - Враг ориентации
У меня есть NPC , который, предположительно, является врагом. Я хочу, чтобы он возвращался к OriginalPosition и OriginalOrientation после смерти игрока. Однако (как отмечено в комментарии к коду) с помощью функции :MoveTo() символ возвращается не в фактическую ту же позицию, а в приблизительную. Например:
print(NPC.HumanoidRootPart.Position) -- Output: X: 11.5, Y: -2.13, Z: 15.49 print(OriginalPosition) -- Output: X: 11.4923973, Y: -2.13432, Z: 15.49
Это мой код:
local FollowZone = script.Parent
local NPC = FollowZone.Parent
local OriginalOrientation = NPC.HumanoidRootPart.Orientation
local OriginalPosition = NPC.HumanoidRootPart.Position
print(OriginalPosition)
local Fighting = 2 -- 1; No Fighting. 2; Neutral. 3; Fighting
local function OnTouch(Part)
if Part.Parent:FindFirstChild("Humanoid") ~= nil and tostring(Part.Parent.Parent.Name) ~= "Enemies" then
local Target = game:GetService("Workspace"):WaitForChild(Part.Parent.Name)
Fighting = 3
while Fighting == 3 do
NPC.Humanoid:MoveTo(Target.HumanoidRootPart.Position)
if Target.Humanoid.Health == 0 then
Fighting = 1
BackToPosition()
BackToOrientation()
end
wait()
end
end
end
function BackToPosition()
while Fighting == 1 do
NPC.Humanoid:MoveTo(OriginalPosition)
print(NPC.HumanoidRootPart.Position) -- X: 11.5, Y: -2.13, Z: 15.49
print(OriginalPosition) -- X: 11.4923973, Y: -2.13432, Z: 15.49
if NPC.HumanoidRootPart.Position == OriginalPosition then
Fighting = 2
end
wait()
end
end
function BackToOrientation()
while NPC.HumanoidRootPart.Orientation ~= OriginalOrientation do
for Index = 1, OriginalOrientation.X do
NPC.HumanoidRootPart.Orientation = Vector3.new(Index, OriginalOrientation.Y, OriginalOrientation.Z)
end
wait()
end
end
script.Parent.Touched:Connect(OnTouch)
1 ответ
local FollowZone = script.Parent
local NPC = FollowZone.Parent
local OriginalPos = NPC.HumanoidRootPart.CFrame
local Fighting = 2 -- 1; No Fighting. 2; Neutral. 3; Fighting
local function OnTouch(Part)
if Part.Parent:FindFirstChild("Humanoid") ~= nil and tostring(Part.Parent.Parent.Name) ~= "Enemies" then
local Target = game:GetService("Workspace"):WaitForChild(Part.Parent.Name)
Fighting = 3
while Fighting == 3 do
NPC.Humanoid:MoveTo(Target.HumanoidRootPart.Position)
if Target.Humanoid.Health == 0 then
Fighting = 1
BackToOrginalPos()
end
wait()
end
end
end
function BackToOrginalPos()
NPC.HumanoidRootPart.CFrame = OriginalPos
end
script.Parent.Touched:Connect(OnTouch)