I am making an FPS game. I've made the guns but there is one problem; Every time I shoot a little bit too low, it will either shoot straight from the ground, or just shoot from the ground into the ground instead of the FirePart (Which is an Attachment in a part ) inside of the gun. Here's a video showing the problem (Please read description and have subtitles on): https://youtu.be/os99udWOqEI
Here is the where the shoot event gets fired from a local script:
raycastEvent:FireServer(mouse.Hit.Position, weapon:WaitForChild(weapon.Name):WaitForChild("FirePart"):WaitForChild("FireAttachment").WorldPosition, weapon:GetAttribute("Damage"), false)
Here is the scripts that receives the event when it gets fired (I shortened it down a bit for this question):
local raycastEvent = game.ReplicatedStorage:WaitForChild("RemoteEvents"):WaitForChild("RaycastEvent") raycastEvent.OnServerEvent:Connect(function(player, endPos, startPos, damage, aimMode) local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Blacklist params.FilterDescendantsInstances = {player.Character} local raycastResults raycastResults = workspace:Raycast(startPos, (endPos - startPos).unit * 100, params) local character = player.Character or player.CharacterAdded:Wait() local head = false if raycastResults then local part = raycastResults.Instance local pos = raycastResults.Position local humanoid = part.Parent:FindFirstChild("Humanoid") print(part.Name) if humanoid then if part.Name == "Head" then head = true humanoid:TakeDamage(damage*2) else head = false humanoid:TakeDamage(damage) end end end end)
If you need anymore information please ask me. Thanks for reading!
For attachments, you need to use
local startPos = attachment.WorldPosition