Problems defining when OnCollisionEnter should start functioning.

I’m doing a simple platforming game, where I need the “Player” to start jumping after pressing space, and everytime it detects a collision, it jumps with the same initial velocity. But I’m having difficulties defining this function to work only after the user press space. Here one of the codes I’ve tried but with no luck (Javascript):

private var vel_i:float = 12;
private var A:boolean;

function Start (){
	A = false;
}

function Update () {
	if(Input.GetKeyUp(KeyCode.Space)){
		A = true;
	}
}

function OnCollisionEnter (collision : Collision)
{
	if (A){
		rigidbody.velocity.y = vel_i;
	}
}

I’ve tried defining a inside OnCollisionEnter but when I run the game the player just stays there, doing nothing, after I press space. Hope I can get some help.

So, you want to jump and you want an upward thrust when you hit an object, provided you are already jumping? Like classic retro games where for example a balloon exploding sends you further up?

Perform your velocity change on Jump.

In OnCollision, if A, (like you’ve done), AddRelativeForce :slight_smile:

Edit: For the jump itself you need Down and to make pressing space do something when it is pressed.

if(Input.GetKeyDown(KeyCode.Space)){
   A = true;
   rigidbody.velocity.y = vel_i;
 }

This will get the velocity applied when space bar goes down.

The collision should AddForce to the Player.