So with my code nothing gets printed to output, it is in a local script as well.
local crate = game.Workspace.Items["Supply Crate"]
local player = game.Players.LocalPlayer
local UIS = game:GetService("UserInputService")
local inventory = game.StarterGui.SupplyInv
local plrinv = game.StarterGui.Inventory
local isOpened = false
local Character = player.Character or player.CharacterAdded:Wait()
-- Build a "RaycastParams" object and cast the ray
local Range = 100
local ray = Ray.new(Character.Head.Position, Character.Head.CFrame.LookVector * Range)
local hit = game.WorkSpace.Items:FindPartOnRay(ray)
local function IsEKeyDown()
if UIS:IsKeyDown(Enum.KeyCode.E) then
return true
end
end
UIS.InputBegan:Connect(function(input)
while true do
if IsEKeyDown() then
print("E has been pressed!")
local part = hit.Parent
if hit and part == crate then
print("Found Crate")
inventory.Enabled = true
plrinv.Enabled = true
isOpened = true
end
end
end
end)
UIS.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.E then
print("E has been pressed!")
local part = hit.Parent
if hit and part == crate then
print("Found Crate")
inventory.Enabled = true
plrinv.Enabled = true
isOpened = true
end
end
end)
is hit a table of items hit by ray? or is it just one part that the ray will hit?
If you just want one part then it’s better of using workspace:RayCast()