Question by
Banditmayonnaise · Dec 21, 2020 at 04:43 PM ·
2d-platformerprogrammingphysics2dgrappling gun
Grapling gun help! Why doesn't my player move towards? Instead of getting stuck in place
I don't know what is going on... But when the Player activate the grappling gun, the spring joint will only pull player to the armTip (which is a game object). Well the player doesn't get pulled the player just stay in place and can't move. I made a drawline function, to better understand what is going and I can see the line starts from the armTip, then draw line to the player. But it should shoot the armTip to another object, then draw line from player to armTip.
void Update()
{
if (Input.GetButtonDown("Fire1") && !wallGrab && !wallSlide)
{
isGrappling = true;
GrapplingArm();
}
}
private void LateUpdate()
{
DrawLine();
}
private void GrapplingArm()
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right);
if (Physics2D.Raycast(armTip.position, armTip.right, maxDistance, whatIsGrappleable))
{
grapplePoint = hit.point;
joint = player.gameObject.AddComponent<SpringJoint2D>();
joint.autoConfigureConnectedAnchor = false;
joint.connectedAnchor = grapplePoint;
float distanceFromPoint = Vector2.Distance(player.position, grapplePoint);
joint.distance = distanceFromPoint * 0.2f; //How much the player is gonna get pulled
// Spring Values
joint.dampingRatio = 0.2f;
joint.frequency = 800000;
lr.positionCount = 2;
currentGrapplePosition = armTip.position;
}
}
private void DrawLine()
{
if (!joint)
return;
currentGrapplePosition = Vector2.Lerp(currentGrapplePosition, grapplePoint, Time.deltaTime * 8f);
lr.SetPosition(0, armTip.position);
lr.SetPosition(1, currentGrapplePosition);
}
Comment
Your answer
Follow this Question
Related Questions
transform.localScal not flipping 0 Answers
Trying to add Directional Attacking 0 Answers
Linerenderer BUG,Problem with the LineRenderer.. 1 Answer
Help with a roll effect 2D 0 Answers
Ad is not ready, why???? 0 Answers