# How do I make a character Lunge?

I want to make my character do a long jump (Think half life 1), while I thought i could do it simply by adding an X value to my Jumping addForce, I end up with my character going in a straight line, up a little, and then stopping

``````void Leap()
{

if (maxJumps > 0)
{
maxJumps = maxJumps - 1;
Vector3 v = playerBody.velocity;
v.y = 0f;
playerBody.velocity = v;

if (right == true)
{ LeapFor = leapForce; }
else if (right == false) { LeapFor = leapForce * -1f; }
isOnGround = false;

}

if (maxJumps == 0)
{
return;
}

}
``````

Temp Answer if this isn’t resolved better later, this is by no means an actual solution, but it’s a bandaid fix

So far your best bet is to suspend your movement until the jump is complete, (possibly find a way to have both movement and addforce separate?) I managed this by using the isOnGround bool

`````` if (isOnGround == true)
{
Vector3 moveVelocity = new Vector3(Input.GetAxis("moveX") * (playerSpeed * 50.0f) * Time.fixedDeltaTime, playerBody.velocity.y, 0.0f);
playerBody.velocity = moveVelocity;
}

void Leap()
{

if (maxJumps > 0)
{
isJumping = true;
Debug.Log("BOUNDS");
maxJumps = maxJumps - 1;
Vector3 v = playerBody.velocity;
v.y = 0f;
v.x = 0f;
playerBody.velocity = v;

if (right == true)
{ LeapFor = leapForce; }
else
if (right == false) {LeapFor = leapForce * -1f; }

isOnGround = false;

}

if (maxJumps == 0)
{
return;
}
}
``````

I am going to assume you have a rigid body.

get a new jump angle. Lets say 45* to keep it easy.

``````RigidBody rb;

void Start () {
rb = GetComponent<RigidBody>();
}

void Jump() {
var dir = new Vector2 (1, 1);
var power = 5;