- Home /
What would it take to make a script that creates a spring joint that could drag rigidbodies, for example in Dani's karlson dev log
Not too much details just wondering what it would take, cant really wrap my head around the idea properly.
Answer by warc692 · Apr 07, 2021 at 11:50 PM
Thanks for the answer (forgot I posted this Review lol) What I was looking for was a way to drag objects. But I did look into danis tutorial detailed, and Instead I figured instead of a grapple swinging the player around, The player attached a line renderer spring joint to an object and the objects updated position would be The players screen to world point.
So it would be similar to the grapple mechanic but sort of reversed if u get wut I mean.
Answer by smillyfaces · Apr 06, 2021 at 09:08 PM
@warc692 Depends on what you mean. If you simply meant swinging the player, dani made a tutorial on how to create one, but if you mean like pulling the player towards the grapple point, im currenlty working on that myself.
So far, from what I've disserved, you first need to calculate the direction of the rope, then add force, towards said rope. You can do this using this function here:
void reel()
{
if (IsGrappling())
{
float distanceToGP = Vector3.Distance(player.position, grapplePoint);
if (distanceToGP > minReelDis)
{
//if you are at maxGrappleDistance or beyond, you will have minGrappleRigidity
//as you approach minGrappleDistance you will become more rigid, up to maxGrappleRigidity
float normalizedDistance = (distanceToGP - minGrappleDistance) / (maxGrappleDistance - minGrappleDistance);
normalizedDistance = 1f - Mathf.Clamp(normalizedDistance, 0f, 1f);
float grappleRigidity = minGrappleRigidity + (normalizedDistance * (maxGrappleRigidity - minGrappleRigidity));
Vector3 normalized = (grapplePoint - player.position).normalized;
rb.velocity = Vector3.MoveTowards(rb.velocity, normalized * reelSpeed, grappleRigidity);
}
else
{
rb.velocity = Vector3.zero;
}
}
}
Though you might want to follow dani's tutorial first as that's what I'm using as a base. Simply add in all the values necessary and your good to go, you might want to play with the values until you find something that feels nice.
Your answer
Follow this Question
Related Questions
Collision with camera inspection target 0 Answers
Jitter on Object with Rigidbody 0 Answers
Camera twitching problem 0 Answers
Orbit cam and Rigidbodies aiming 0 Answers