Hello!! So I am using raycasting for a projectile, but it doesn’t end if a player walks into it and it ends too early if a player walks out (it’s made for rays so what did I expect). I was wondering if anyone had any way to achieve this or any alternatives to raycasting. Here’s a sample of my script:
local origin = myCharacter["Right Arm"].Position
local direction = (mousePosition - origin).Unit * 200
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {
workspace.TestPart,
ProjectileClone,
myCharacter
}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.IgnoreWater = true
local raycastResult = workspace:Raycast(origin, direction, raycastParams)
local hitPos = raycastResult and raycastResult.Position or (origin + direction)
local distance = (hitPos - origin).Magnitude
local speed = 100
local duration = distance / speed
local tween = game:GetService("TweenService"):Create(
ProjectileClone,
TweenInfo.new(duration, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{Position = hitPos}
)
tween:Play()
As always, I appreciate any and all help from you guys. Thanks!