My instance variable (esk) can not move down past where the wall array ends on the bottom. The top works fine! I don't know what's wrong here, hes colliding with nothing beside this wall all the way to the middle of the level.
Code:
private function onEnter( e:Event )
{
checkCollisions();
}
private function checkCollisions()
{
var leftSideWall:int;
var rightSideWall:int;
var topSideWall:int;
var bottomSideWall:int;
var leftRightBuffer:int = 2;
var topBottomBuffer:int = 2;
var leftSideesk:int = esk.x - esk.width/2;
var rightSideesk:int = esk.x + esk.width/2;
var topSideesk:int = esk.y;
var bottomSideesk:int = esk.y;
for( var i:int = 0; i < walls.length; i++ )
{
leftSideWall = walls[i].x - walls[i].width/2;
rightSideWall = walls[i].x + walls[i].width/2;
topSideWall = walls[i].y - walls[i].height/2;
bottomSideWall = walls[i].y + walls[i].height/2;
if( ( rightSideesk >= leftSideWall ) && ( leftSideesk <= rightSideWall ) )
{
if( ( bottomSideesk <= topSideWall ) && ( bottomSideesk + esk.dy >= topSideWall) )
{
trace("hittop");
esk.y = topSideWall - topBottombuffer;
esk.HITTOP = true;
break;
}
else if( ( topSideesk >= bottomSideWall ) && (topSideesk - esk.dy >= bottomSideWall ) )
{
trace("hitbot");
esk.y = bottomSideWall + esk.height/2 + topBottombuffer;
esk.HITBOTTOM = true;
break;
}
}
else
{
esk.HITTOP = false;
esk.HITBOTTOM = false;