-
What do you want to achieve?
I wanna switch from using RaycastHitbox module to this FastCast module.
The result should look something similar to this:
robloxapp-20200606-1847083 -
What is the issue?
The sword doesn’t move. It does the throw animation and stays frozen in mid air. -
What solutions have you tried so far?
I’ve been looking all over the api for anything I might be missing. I don’t understand what’s wrong with my code.
swordClone = nil;
hitSomething = false;
-- new caster for throwable sword
Caster = FastCast.new()
-- not sure what I would do with the origin, lastPoint, rayDir, displacement, or cosmeticBulletObject
Caster.LengthChanged:connect(function(...)
print(...)
end)
-- Upon the caster hitting something
OnHitConnection = Caster.RayHit:Connect(function(hit,hitPos, normal, material, cosmeticBulletObject)
print'RayHit Event called'
if not hit then
return
end
print('Hit obj found',hit:GetFullName())
if (hit ~= swordClone) and (hit.CanCollide or hit.Parent:FindFirstChild('Humanoid') ) then
hitSomething = hit
doDamage(hit,DefaultDamage*3)
if swordClone then
swordClone.CFrame = swordClone.CFrame*CFrame.new(0,-3,0)
end
--OnHitConnection:Disconnect()
wait(1)
if swordClone then
swordClone.Anchored = false
swordClone.CanCollide = true
end
end
end)
function throwAttack(whereToThrow)
print'Throw attack!'
SpearThrowAnim:Play(.1,1,2)
Handle.SwingSound:Play()
SpearThrowAnim.Stopped:Wait()
swordClone = Handle:Clone()
swordClone.CFrame = CFrame.new(Handle.Position,whereToThrow)*CFrame.Angles(math.rad(-90),0,0)
swordClone.Anchored = true
swordClone.Parent = workspace--Char
Tool.Parent = game.ServerScriptService -- I don't use ServerStorage because this script is inside the tool, I don't want the script to end here.
local origin = swordClone.Position
local direction = (origin-whereToThrow).Unit
local BULLET_GRAVITY = Vector3.new(0,-1,0)
-- Fire/throw the sword!
Caster:Fire(origin, direction*3, 100, swordClone, Char, false, BULLET_GRAVITY)
hitSomething = false
-- make sword pick-up-able stuff (you can ignore the stuff after this line)
local EInteractObj = game.ServerStorage.EtoInteract:Clone()
EInteractObj.Parent = swordClone
local toolTaken = false
EInteractObj.OnPlayerActivate.Event:Connect(function(PlayerWhoClicked)
if toolTaken then
return
end
toolTaken = true
local gave = give(PlayerWhoClicked,Tool)
if gave then
Player = PlayerWhoClicked
Char = Player.Character
Hum = Char:WaitForChild('Humanoid')
OnHitConnection:Disconnect()
swordClone:Destroy()
else
toolTaken = false
end
end)
end
The throwAttack function is called whenever the user activates the throw-move.
whereToThrow is the Mouse.Hit.p value (this is a server script though)