Do you like my tutorials?

Then consider supporting me on Ko-fi

Talking about Platform game game, Actionscript 2, Flash and Game development.

In the second part of the engine, I added boundary walls.

Still raw code at the moment, but you can see it in action here.

It’s the same thing as the one published in part 1, I just added walls and collisions.

One note… the hero now has its anchor point on its center, where in the previous example it was in the upper left corner

tile_size = 20;
ground_acceleration = 1;
ground_friction = 0.8;
ice_acceleration = 0.15;
ice_friction = 0.95;
treadmill_speed = 2;
max_speed = 3;
xspeed = 0;
level = new Array();
level[0] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
level[1] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
level[2] = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
level[3] = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
level[4] = [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 1, 1, 4, 4, 4, 4, 1, 1];
player = [1, 3];
function create_level(l) {
	_root.createEmptyMovieClip("level_container", 1);
	level_height = l.length;
	level_width = l[0].length;
	for (y=0; ymax_speed) {
		xspeed = max_speed;
	}
	if (xspeed<-max_speed) {
		xspeed = -max_speed;
	}
	xspeed += bonus_speed;
	x_pos += xspeed;
	check_collisions();
	level_container.hero._x = x_pos;
	xspeed -= bonus_speed;
};
function ground_under_feet() {
	bonus_speed = 0;
	y_feet = Math.floor(y_pos/tile_size)+1;
	x_feet = Math.floor((x_pos+tile_size/2)/tile_size);
	switch (level[y_feet][x_feet]) {
	case 1 :
		over = "ground";
		speed = ground_acceleration;
		friction = ground_friction;
		break;
	case 2 :
		over = "ice";
		speed = ice_acceleration;
		friction = ice_friction;
		break;
	case 3 :
		over = "treadmill";
		speed = ground_acceleration;
		friction = ground_friction;
		bonus_speed = -treadmill_speed;
		break;
	case 4 :
		over = "treadmill";
		speed = ground_acceleration;
		friction = ground_friction;
		bonus_speed = treadmill_speed;
		break;
	}
}
function check_collisions() {
	get_edges();
	// collision to the left
	if (xspeed<0) {
		if ((level[top][left] != 0) or (level[bottom][left] != 0)) {
			x_pos = (left+1)*tile_size+5;
			xspeed = 0;
		}
	}
	// collision to the right 
	if (xspeed>0) {
		if ((level[top][right] != 0) or (level[bottom][right] != 0)) {
			x_pos = (right)*tile_size-5;
			xspeed = 0;
		}
	}
}
function get_edges() {
	// right edge
	right = Math.floor((x_pos+6-1)/tile_size);
	// left edge   
	left = Math.floor((x_pos-6)/tile_size);
	// bottom edge
	bottom = Math.floor((y_pos+9-1)/tile_size);
	// top edge
	top = Math.floor((y_pos+9)/tile_size);
}

Download the source and enjoy… next station: gravity…

Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.