Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

Throw ball on click?

Asked by
RafDev 109
8 years ago
Edited 8 years ago

I am trying to make a ball that can be "owned" by a player (if so, it gets welded to the owner's Right Arm - like a tool), or, if not owned by anyone, slowly fall to the ground.

To "own" the ball, you simply have to touch it (disregarding if it's owned by someone else or not).

The "owning" part seems to be working fine, but I need it to be thrown on click, heading to the direction the player clicks (i.e., if the player is facing the left side, but clicks on the right side, it gets thrown to the right side, exactly to the direction to which the player clicked).

I need it to reach a certain speed and then slow down until it stops.

I am awful with BodyMovers, so I probably did everything wrong.

A small summary of my current code is below:

01-- quaffle variable points to the ball
02 
03-- set gravitational pull to less
04local GravityBodyForce = Instance.new("BodyForce", quaffle)
05GravityBodyForce.force = Vector3.new(0, game.Workspace.Gravity/1.25, 0) * quaffle:GetMass()
06 
07-- owner is an ObjectValue that points to the Player Instance that "owns" the ball
08 
09function onClick(plr, firePos)
10        -- plr: Player who clicked
11        -- firePos: Mouse.Hit.p at time of click
12    if owner.Value~=plr then return end
13    owner.Value = nil
14    updateOwner() -- Gets rid of the weld, since owner.Value is nil
15    dontAcceptNewOwners = true
View all 21 lines...

Please help! Thanks in advance.

1 answer

Log in to vote
0
Answered by
cabbler 1942 Moderation Voter
8 years ago

Most people would just use a bodyvelocity, but actually applying forces is fine. They're both vectors so you can use them similarly. force.force = firePos * quaffle:GetMass() Doesn't really make sense though. Force is a vector which is a direction multiplied by a magnitude. firePos is a position, not a direction.

To get direction: local direction = (firePos - plr.Character.Head.Position).unit This is where the character is looking, even in third person. Then you multiply that by how much force you actually want to apply. I hope this helps!

0
It doesn't really work for some reason, but in theory it should, so I decided to accept it. RafDev 109 — 8y
0
I'll help you further if you want cabbler 1942 — 8y
Ad

Answer this question