Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualBeerNutts

Posted 26 October 2012 - 01:53 PM

Hi Xanther,

I have a snippet of code that handles movement in a 2d platformer-type game that I've posted in other topics. It handles jumping, but it also handles collision in X direction, and moving the player out of the collision zone. It should work with almost any situation and map for falling off ledges, hitting head on platform above you, or moving against a wall, which slides up and down, you will wlak past once it's out of the collision zone. BTW, the numbers below are just guesses, make them what you want to make a good game.
// Speed player moves left or right
#define MOVEMENT_SPEED 10.0f
// initial velocity given to player when he jumps
#define JUMP_VELOCITY  20.0f
void Player::HandleInput()
{
  if (LeftIsPressed()) {
	this.xVelocity = -MOVEMENT_SPEED;
  }
  else if (RightIsPressed()) {
	this.xVelocity = MOVEMENT_SPEED;
  else {
	this.xVelocity = 0.0f;
  }
  // Only jump if we're not already jumping or falling
  if (JumpIsPressed() && this.OnGround) {
	this.yVelocity = -JUMP_VELOCITY;
  }
}
// defines amount to increase downward velocity every frame
#define GRAVITY_FORCE 4.0f
void Player::Update()
{
  // Apply downward force to player
  this.yVelocity += GRAVITY_FORCE;
  // Move the Player
  this.xLocation += this.xVelocity;
  this.yLocation += this.yVelocity;
  // Check we've collide with something above or below us
  bool CollideBelow;
  if (CheckCollisionY(CollideBelow)) {
	// move us back to previous location and Stop Y Velocity
	this.yLocation -= this.yVelocity;
	this.yVelocity = 0.0f;
	if (CollideBelow) {
	  this.OnGround = true;
	}
  }
  else {
	this.OnGround =  false;
  }
  // Check if we've collided with anything on our left or right
  if (CheckCollisionX()) {
	// move us back to previous location and Stop X Velocity
	this.xLocation -= this.xVelocity;
	this.xVelocity = 0.0f;
  }
}

Have fun and Good Luck!

#1BeerNutts

Posted 26 October 2012 - 01:50 PM

Hi Xanther,

I have a snippet of code that handles movement in a 2d platformer-type game that I've posted in other topics. It handles jumping, but it also handles collision in X direction, and moving the player out of the collision zone.
// Speed player moves left or right
#define MOVEMENT_SPEED 10.0f
// initial velocity given to player when he jumps
#define JUMP_VELOCITY  20.0f
void Player::HandleInput()
{
  if (LeftIsPressed()) {
    this.xVelocity = -MOVEMENT_SPEED;
  }
  else if (RightIsPressed()) {
    this.xVelocity = MOVEMENT_SPEED;
  else {
    this.xVelocity = 0.0f;
  }
  // Only jump if we're not already jumping or falling
  if (JumpIsPressed() && this.OnGround) {
    this.yVelocity = -JUMP_VELOCITY;
  }
}
// defines amount to increase downward velocity every frame
#define GRAVITY_FORCE 4.0f
void Player::Update()
{
  // Apply downward force to player
  this.yVelocity += GRAVITY_FORCE;
  // Move the Player
  this.xLocation += this.xVelocity;
  this.yLocation += this.yVelocity;
  // Check we've collide with something above or below us
  bool CollideBelow;
  if (CheckCollisionY(CollideBelow)) {
    // move us back to previous location and Stop Y Velocity
    this.yLocation -= this.yVelocity;
    this.yVelocity = 0.0f;
    if (CollideBelow) {
	  this.OnGround = true;
    }
  }
  else {
    this.OnGround =  false;
  }
  // Check if we've collided with anything on our left or right
  if (CheckCollisionX()) {
    // move us back to previous location and Stop X Velocity
    this.xLocation -= this.xVelocity;
    this.xVelocity = 0.0f;
  }
}

Have fun and Good Luck!

PARTNERS