The Most ACCURATE Projectile in ROBLOX!!

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 เม.ย. 2023
  • yes i clickbait but the vid is REAL
    learn abt physics and kinematics
    Resources:
    FastCast - etithespir.it/FastCastAPIDocs/
    Physics by Professor Dave - • Classical Physics
    Discord: / discord
    My current project: / discord

ความคิดเห็น • 108

  • @fidgetspinner71
    @fidgetspinner71  7 หลายเดือนก่อน +4

    Part 2 is out now!!! Learn how to make your projectiles bounce!!
    th-cam.com/video/xs6G2KhpiP4/w-d-xo.htmlsi=ju6EgeyIsvYbWpXu

  • @theprancingprussian
    @theprancingprussian 4 หลายเดือนก่อน +2

    very useful, im testing ideas on developing a matchlock gun system, a single tool instead of getting over my head with an entire game, helps great since the accurate physics of it performs way further from hitscan than other weaponry

  • @yaspat616
    @yaspat616 8 หลายเดือนก่อน +2

    you're talented oml❤

  • @SurrealTurnip
    @SurrealTurnip ปีที่แล้ว +2

    Fantastic video, exactly what I needed and you actually managed to explain it pretty well

  • @Rocush
    @Rocush 6 หลายเดือนก่อน +3

    THE WAY I CLAPPED AND SAID YESSS! 💀 WHEN YOU SAID I'M GONNA TEACH YOU HOW TO WRITE IT YOURSELF. So many dang tutorials are just people showing us how to use the modules and I've always hated those videos because I want to know how to do it not just rely on someone else and never learn. I was about to click off and then you said "the module FastCast" I'm so happy this wasn't one of those.

  • @grevict
    @grevict 6 หลายเดือนก่อน

    Thanks for the tutorial, so helpful :D

  • @faded_ace5144
    @faded_ace5144 9 หลายเดือนก่อน +18

    This is definitely complex but what's more complex are the emotions you feel whilst trying to deal with body velocities and watching something move in the air at a total speed of 5fps. So ty

  • @thebestn0oobever
    @thebestn0oobever 11 หลายเดือนก่อน +2

    This is gonna be so good for my fighting game knockback, thanks

  • @LianBuatSesuatu
    @LianBuatSesuatu หลายเดือนก่อน

    Thank you very much, I learned a lot from this video.

  • @whozproxy
    @whozproxy 4 หลายเดือนก่อน +1

    Thanks for this video! I’m pretty new with Raycasts and I’m trying to make a custom gun system or my game and this will help a lot!

  • @NotAltered7750
    @NotAltered7750 9 หลายเดือนก่อน +2

    Thought I was learning physics. Anyways, nice video

  • @Glimmers
    @Glimmers 6 หลายเดือนก่อน

    Hey awesome video! When I put in a model as projectile it moves just fine but it looks a little bit choppy because I am just settings its position every RayCast do you think Tween or Lerping would work in anyway for the projectile so it looks smove when it moves?

  • @vis7040
    @vis7040 5 หลายเดือนก่อน +1

    you resumed my physics semester

  • @gggamingtakeshi7035
    @gggamingtakeshi7035 4 หลายเดือนก่อน +1

    Here I am, with my non mathematician brain making a goal part created on mouse position with a limited range, then moving it downwards and slowly accelerates downwards faster simulating gravity and having my raycast slowly approach it based on bullet speed when I could've just done this.

  • @LeviathanKoda
    @LeviathanKoda ปีที่แล้ว +1

    this is so incredibly underrated

  • @masterssandwich3312
    @masterssandwich3312 6 หลายเดือนก่อน +4

    the memory usage went up to 3 gigabytes lol

  • @sarwix8306
    @sarwix8306 6 หลายเดือนก่อน

    Idk why but this is the coolest video on roblox studio I have ever seen

  • @vrfrenzy8451
    @vrfrenzy8451 11 หลายเดือนก่อน +2

    thanks, I hate relying on other peoples modules

  • @Jelleydev
    @Jelleydev ปีที่แล้ว +2

    only reason i subbed is to fix the 666 nice video btw

  • @citizenfoffie7605
    @citizenfoffie7605 5 หลายเดือนก่อน

    Would there be a way for me to set it to hit a certain amount of studs by adding on angle(but without moving the mouse up), to create a zeroing effect

  • @TinShredder
    @TinShredder ปีที่แล้ว +1

    very cool vid

  • @Al3xWarrior
    @Al3xWarrior 7 หลายเดือนก่อน

    Very nice!

  • @happe3513
    @happe3513 5 หลายเดือนก่อน

    I haven't seen anyone else with this problem in the comments but every time I require the module it says attempt to call a table value.

  • @felipemfrudeli
    @felipemfrudeli 7 หลายเดือนก่อน

    thx for the video

  • @Leafy597
    @Leafy597 2 หลายเดือนก่อน +1

    The issue with having hitboxes client side is that a user can exploit them to hit every time. I prefer having them on the server for that reason, also because everyone gets the same performance that way, one persons hitbox accuracy is the same as anothers.

    • @Reviire
      @Reviire 2 หลายเดือนก่อน

      Yeah. The client can tell the server where to start it, but all validation should be on the server only. As long as simulation is consistent between client and server the client predicted simulation should be almost the same as the server, if ping is high there may be issues though.
      But it'll still feel good to use as long as it's predicted on the client rather than appearing 0.2-0.4s in the past on your client.

  • @Vortex-qb2se
    @Vortex-qb2se 10 หลายเดือนก่อน +7

    I was looking for client-side hitbox as it fixes network latency issues but nice tutorial.

    • @notactuality
      @notactuality 10 หลายเดือนก่อน

      clientcast?

    • @kokobroxd
      @kokobroxd 10 หลายเดือนก่อน +1

      you can just use it on client side

    • @TREB0RZ
      @TREB0RZ 3 วันที่ผ่านมา

      @@notactuality bad for projectiles

  • @bob-rx9yb
    @bob-rx9yb 5 หลายเดือนก่อน

    Can i use this to make a cannon like bofors or flak 88 ?

  • @Ey_SmoKrac
    @Ey_SmoKrac 6 วันที่ผ่านมา

    not watchin allat it 3:14 in da damn mornin i tired asshit

  • @LeapInno
    @LeapInno 6 หลายเดือนก่อน

    It seems like roblox projectiles has this weird delay for every shot. It makes it look weird.

  • @primharley9586
    @primharley9586 6 หลายเดือนก่อน

    Wait. If it’s running on the client doesn’t that make it not secure?

  • @Xisco72
    @Xisco72 4 หลายเดือนก่อน +1

    I don't think this is the best for big projectiles, because i'm using this to move a trash MeshPart, and sometimes it goes through parts that shouldn't because they can collide. For example, i'm throwing this meshpart against a house wall, it collides with it and detects the hit, but it trespasses it. Maybe because the mesh is kinda "big" and since you are constantly changing the position, it goes through them unlike when you are using a velocity mover

    • @fidgetspinner71
      @fidgetspinner71  4 หลายเดือนก่อน +1

      This video was made before spherecast was added. Use spherecast problem solved

    • @Xisco72
      @Xisco72 4 หลายเดือนก่อน

      tysm you were right!!! congrats on the video, really useful module to move big projectiles 🥰 @@fidgetspinner71

  • @qxxrd
    @qxxrd 11 หลายเดือนก่อน +3

    hey, I'm working on a throwable football and I want the nose of the football to be looking at the direction that the player throws in. I have my own custom caster which handles the football drop and physics.

    • @pepperdayjackpac4521
      @pepperdayjackpac4521 11 หลายเดือนก่อน

      CFrame.LookAt()

    • @qxxrd
      @qxxrd 11 หลายเดือนก่อน

      @@pepperdayjackpac4521 Can you please elaborate more?

    • @pepperdayjackpac4521
      @pepperdayjackpac4521 11 หลายเดือนก่อน

      @@qxxrd CFrame.LookAt will angle your obj so that it faces its targetPosition. It takes in two parameters: the starting position (the position of the obj) and the targetPosition (which is where the obj will be facing towards), both are Vector3.
      if your football is changing directions, then you need to recalculate the starting and target position each time so that the nose points like it would in real life.
      But if it's just moving in a straight line, then you won't need to recalculate.

    • @qxxrd
      @qxxrd 11 หลายเดือนก่อน

      @@pepperdayjackpac4521 I have tried to do what you said but the problem now is the when the player throws to the side the nose of the football is fowards and not facing where the player aimed to.
      Caster Code:
      NewProjectile = self.Projectile:Clone()
      DirectionVector = (target - origin).Unit
      PositionVector = *Trajectory Calculations*
      -- THIS PART IS IN A LOOP
      NewProjectile.CFrame = CFrame.lookAt(ProjectilePosition, DirectionVector)

    • @fidgetspinner71
      @fidgetspinner71  11 หลายเดือนก่อน

      @@qxxrd just multiply it by some rotation cframe that fits with your model (ex. CFrame.Angles(math.rad(90),0,0) )
      (i think cframe.angles uses radians instead of degrees but idk just play around with it)

  • @haxking2
    @haxking2 9 หลายเดือนก่อน +6

    great video, idk why but I've always been under the impression that this would've been more complex.
    quick question though, does using runservice to execute code every frame on client (even if it's just changing a few values) not a good practice?

    • @Antonio-vf2xj
      @Antonio-vf2xj 9 หลายเดือนก่อน

      Well i didnt see the video fully but yea, if ya uses renderstepped, but as its used on clientside i guess, it doesnt affect server at all, so maybe slighty lag but no server lag so like data saving and everything else is safe

    • @thetable8175
      @thetable8175 9 หลายเดือนก่อน

      as far as I know you need to take into account people having different frame rates causing codes to run too fast or too slow, I've seen many games put for example dashes that update a BodyVelocity's direction every frame for a set amount of times and then destroy it causing higher fps to destroy the BodyVelocity earlier making you travel shorter while capping your fps at around 30 would make it go a lot further

    • @thetable8175
      @thetable8175 9 หลายเดือนก่อน

      if you wanna do stuff with runservice I'd put checks with like ticks() to make sure your code acts as desired

    • @haxking2
      @haxking2 9 หลายเดือนก่อน

      @@thetable8175 wouldn't delta time have the same effect though? or am I misunderstanding it

    • @thetable8175
      @thetable8175 9 หลายเดือนก่อน

      @@haxking2 yeah delta time is the absolute difference between 2 times

  • @Leafy597
    @Leafy597 2 หลายเดือนก่อน

    A trick, instead of using Heartbeat and wait() in your script, use task.wait(). The task.wait() command can run at the same speed as heartbeat (60hz, every frame), but you can also input seconds into the parenthesis the same as normal wait().

    • @beedrillking4023
      @beedrillking4023 25 วันที่ผ่านมา

      just use render stepped much better

  • @hotcrazy15
    @hotcrazy15 7 หลายเดือนก่อน

    wow cool

  • @user-nil_cyan
    @user-nil_cyan 3 หลายเดือนก่อน

    What is "self"? ( self.Wind.X, self.Wi...)

  • @samdoesnotexist79
    @samdoesnotexist79 ปีที่แล้ว

    hello jit.

  • @trilazer_duo8659
    @trilazer_duo8659 ปีที่แล้ว +1

    So i have an error that says that projectile is not a member of folder modules, whats the fix?

  • @Sadjhj
    @Sadjhj 9 หลายเดือนก่อน +1

    Hey, is it possible to use this on a model? I have a firework game and I want to move the firework physics to client side but every time I tried I couldn’t get it to work.

    • @reddeadleisure
      @reddeadleisure 8 หลายเดือนก่อน

      Could you be more specific? Maybe you could even open a devforum post about it

    • @cyberlordshop
      @cyberlordshop 7 หลายเดือนก่อน

      Yeah absoloutely. Fire the event, whenever you want the firework to be activated. Just name the start, dest and force. It should work.

    • @reddeadleisure
      @reddeadleisure 7 หลายเดือนก่อน

      Bruh i think i replied to the wrong comment

    • @cyberlordshop
      @cyberlordshop 7 หลายเดือนก่อน

      really?@@reddeadleisure

  • @hadderz4337
    @hadderz4337 8 หลายเดือนก่อน

    hi wuzrd

  • @sadge6430
    @sadge6430 4 หลายเดือนก่อน

    ko-

  • @Grandmasterannuuu
    @Grandmasterannuuu 11 หลายเดือนก่อน +3

    Its better to have a black list raycast param instead of whitelist for bigger games

    • @pepperdayjackpac4521
      @pepperdayjackpac4521 11 หลายเดือนก่อน

      Why

    • @WoozyNate
      @WoozyNate 11 หลายเดือนก่อน

      @@pepperdayjackpac4521 you will have to constantly add many folders and children instead of just blacklisting certain things

    • @rei2261
      @rei2261 11 หลายเดือนก่อน

      @@pepperdayjackpac4521 because unless u wanted to whitelist couple of things it would be more efficient

    • @notactuality
      @notactuality 10 หลายเดือนก่อน

      you cant allocate for every single thing the projectiles should hit a metaphor would be rather sort out the bad ones instead of look for the good ones @@pepperdayjackpac4521

    • @Nightwinger5100
      @Nightwinger5100 7 หลายเดือนก่อน +1

      ​@pepperdayjackpac4521 it'll reach a point where there's less things you want it to hit instead of ignore

  • @chiaweijie194
    @chiaweijie194 ปีที่แล้ว

    is it possible for me to do this without a tool?

    • @fidgetspinner71
      @fidgetspinner71  ปีที่แล้ว +1

      yes, thats why I made it into a module.

  • @Gray_mk
    @Gray_mk 5 หลายเดือนก่อน

    how do i make it so when it touches a part it destroys and doesnt just go through it

    • @fidgetspinner71
      @fidgetspinner71  5 หลายเดือนก่อน

      End the loop whenever the raycast detects something

  • @cupcakewithrabies-eb4rq
    @cupcakewithrabies-eb4rq 4 หลายเดือนก่อน

    How do I make it so that I can apply these physics to an already existing part?

  • @Master_A-A
    @Master_A-A 3 หลายเดือนก่อน

    Yo so the projectile curves for me without adding wind
    Any ideas why?

  • @Xackory
    @Xackory 9 หลายเดือนก่อน

    Great vid

  • @sadge6430
    @sadge6430 2 หลายเดือนก่อน

    wcb

  • @l8tralalt901
    @l8tralalt901 6 หลายเดือนก่อน

    man but i hate math!

  • @namebutworse
    @namebutworse 10 หลายเดือนก่อน

    projectile doesnt shoot and i did everything correctly what do i do

    • @Kylerisano
      @Kylerisano 10 หลายเดือนก่อน

      That's a you problem 🤠 🙌

    • @namebutworse
      @namebutworse 10 หลายเดือนก่อน

      @@Kylerisano :(
      (BWOOOMP)
      ;(

    • @illogicalsavings8268
      @illogicalsavings8268 8 วันที่ผ่านมา

      Ever fix it?

  • @sadge6430
    @sadge6430 4 หลายเดือนก่อน

    `

  • @sadge6430
    @sadge6430 2 หลายเดือนก่อน

    8yt

  • @spriteman1925
    @spriteman1925 7 หลายเดือนก่อน

    I hate math 🤠🤠🤠🤠🤠🤠🤠🤠🤠🤠🤠🤠🤠🤠

  • @sadge6430
    @sadge6430 4 หลายเดือนก่อน

    das

  • @Mufazl2120
    @Mufazl2120 ปีที่แล้ว

    Awesome😃

  • @CrystalizedGGG
    @CrystalizedGGG 6 หลายเดือนก่อน

    for some reason this line has an error for me - newProjectile.Params.FilterType = Enum.RaycastFilterType.Whitelist

    • @NotTaskAgain
      @NotTaskAgain 6 หลายเดือนก่อน +1

      Change it to "Enum.RaycastFilterType.Include" at the end, I think thats the issue

    • @_Sench
      @_Sench 4 หลายเดือนก่อน

      Just incase you still need it. For some reason its underlined but it works in game
      my line-
      newProjectile.Params.FilterType = Enum.RaycastFilterType.Whitelist

  • @VeryProPlayerYesSir1122
    @VeryProPlayerYesSir1122 11 หลายเดือนก่อน +1

    local RunService = game:GetService("RunService")
    local Debris = game:GetService("Debris")
    local Projectile = {}
    function Projectile.new(Gravity, Whitelist, Wind, DespawnTime, Visualize)
    local newProjectile = {}
    newProjectile.Gravity = Gravity
    newProjectile.Wind = Wind
    newProjectile.DespawnTime = DespawnTime
    newProjectile.Visualize = Visualize
    newProjectile.Params = RaycastParams.new()
    newProjectile.Params.FilterType = Enum.RaycastFilterType.Whitelist
    newProjectile.Params.FilterDescendantsInstances = Whitelist
    function newProjectile:Cast(start, dest, force)

    local conversion = (game.Workspace.Gravity) / 9.8
    local vForce = (dest - start).Unit * force * conversion
    local a = Vector3.new(self.Wind.X, self.Wind.Y - self.Gravity * 9.8, self.Wind.Z) * conversion
    local t = 0
    local currentPos = start
    local rayResult = nil
    local found = false
    local Connection = RunService.Heartbeat:Connect(function(dt)
    if not found then
    t = t + dt
    local projPos = Vector3.new(
    start.X + vForce.X * t + 0.5 * a.X * t * t,
    start.Y + vForce.Y * t + 0.5 * a.Y * t * t,
    start.Z + vForce.Z * t + 0.5 * a.Z * t * t
    )
    rayResult = workspace:Raycast(currentPos, projPos - currentPos, self.Params)

    currentPos = projPos
    if self.Visualize then
    local Part = Instance.new("Part")
    Part.Size = Vector3.new(0.5, 0.5, 0.5)
    Part.Position = rayResult.Position
    Part.Anchored = true
    Part.CanCollide = false
    Part.Material = Enum.Material.Neon
    Part.Color = Color3.fromRGB(0, 255, 0)
    Part.Shape = "Ball"
    Part.Parent = game.Workspace
    Debris:AddItem(Part, 0.5)
    end
    if rayResult or t > self.DespawnTime then
    found = true
    end
    end
    end)
    while not found do
    wait()
    end
    Connection:Disconnect()
    if rayResult then
    print("Detected")
    end
    end
    return newProjectile
    end
    return Projectile
    Did i do anything wrong because the "rayResult = workspace:Raycast(currentPos, projPos - currentPos, self.Params)" is nil and "Part.Position = rayResult.Position" returns an error.

    • @MythIsTheLegend
      @MythIsTheLegend 11 หลายเดือนก่อน

      Since ray result is nil, your visualization will not follow anything since it does not exist so do Part.Position = projPos

    • @rei2261
      @rei2261 10 หลายเดือนก่อน

      @@MythIsTheLegend that doesn't
      work

    • @MythIsTheLegend
      @MythIsTheLegend 10 หลายเดือนก่อน

      @@rei2261 It should work because if you do everything correctly and then set part pos to the projectile pos then it always follows the position of the part because if your raycast is nil it don't exist meaning your visual just doesn't go anywhere else.

    • @rei2261
      @rei2261 10 หลายเดือนก่อน

      @@MythIsTheLegend ok

    • @R3DACTED3310
      @R3DACTED3310 8 หลายเดือนก่อน

      why does the projectile spawn higher then the player

  • @VeryProPlayerYesSir1122
    @VeryProPlayerYesSir1122 11 หลายเดือนก่อน

    local Projectile = require(Modules.Projectile).new(1,workspace:GetChildren(),Vector3.new(0,0,0),3, true)
    15:08:41.240 Projectile is not a valid member of Folder "ServerScriptService.Modules" - Server - slingshot_server:9
    please help me, the code gives this kind of error