Increasing Ray Thickness & Making Ray Hit Multiple Targets

1st Problem [Solved]:

I made a script that damages nearby players using raycasting, the only problem is that the ray will only work when players are directly infront of you.

Example Video:

As you can see damage is only done when im directly facing the player, so how do I widen the raycast?

2nd Problem:

I want my damage script to hit multiple players at a time if they are also within its range, but the ray only hits the first target it finds.

Example Video:

How do I make a ray hit multiple targets instead of just one?

Damage Script (for both problems):

repeat wait() until script.Parent.Name == "HumanoidRootPart"

---- Character Vars

local char = script.Parent.Parent
local HRP = script.Parent
local RightHand = char:FindFirstChild("RightHand")

---- Find Weapon & DMG ----

local Weapon

for _,HandPart in pairs(RightHand:GetChildren()) do
	if HandPart:FindFirstChild("SwordType") then
		Weapon = HandPart

local MinDMG = Weapon:FindFirstChild("MinDMG")
local MaxDMG = Weapon:FindFirstChild("MaxDMG")
local AtkDMG = math.floor(math.random(MinDMG.Value,MaxDMG.Value))


---- Get ATK Range ----
local PlrSwordType = Weapon:FindFirstChild("SwordType")
local AtkRange

if PlrSwordType.Value == "Longsword" then
	AtkRange = 7
elseif PlrSwordType.Value == "Greatsword" then
	AtkRange = 7.8
elseif PlrSwordType.Value == "Spear" then
	AtkRange = 11

---- DMG Raycast ----

local DamageRay =,HRP.CFrame.LookVector * AtkRange)

local hit,pos = workspace:FindPartOnRayWithIgnoreList(DamageRay, {script.Parent.Parent})


if hit then 
local hum = hit.Parent:FindFirstChild("Humanoid")
local SwordType = hit.Parent.Parent:FindFirstChild("SwordType")
-------- Do DMG to Shield --------
local Shield
if SwordType then
	if SwordType.Value == "Shield" then
			Shield = SwordType.Parent
			local ShieldHealth = Shield:FindFirstChild("Health")
			ShieldHealth.Value = ShieldHealth.Value - AtkDMG
---- Do DMG to Opponent ----
if hum == nil and Shield == nil then
	hum = hit.Parent.Parent:FindFirstChild("Humanoid")
	if hum == nil then
		hum = hit.Parent.Parent.Parent:FindFirstChild("Humanoid")
		if hum == nil then
			hum = hit.Parent.Parent.Parent.Parent:FindFirstChild("Humanoid")
elseif hum ~= nil and Shield == nil then

you need to cats multiple rays,
a fast and easy solution can be

1 Like

Hey so I figured out how to make the weapon hit multiple targets, but is there a way to make the Raycast wider without using the hitbox module?

Just use touch events for melee weapons, and have a table of humans hited to prevent same target getting damaged twice

instead of firing a raycast, you could instance a new part and set it to how big you want the hitbox to be, position it in front of the character then use BasePart:GetTouchingParts() which will return a table of all the baseparts which are touching the hitbox part. then you can go through the table in a for loop and check if each part is called “HumanoidRootPart”, if it is called that then you can find the humanoid and damage it