Help with floor like in palatform game
Hi, I have created a character that i just want to move left and right but when i run the SWF the character doesn't recognise the floor and falls straight threw.
PLEASE HELP!!!
Here is my code:
package {
//import fl.controls.Button;
//import fl.controls.TextInput;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
import flash.utils.*;
public class Test extends MovieClip {
//set movement constants
static const gravity:Number = .0025;
//edge scrolling of x axis
static const edgeDistance:Number = 360;
//maximum speed camera will move while scrolling
static const cameraSpeed:Number = 10;
//object arrays
private var fixedObjects:Array;
//private var otherObjects:Array;
//character
private var kenny:Object;
//game state
private var playerObjects:Array;
private var gameMode:String = "login";
private var lastTime:Number = 0;
//start game
public function startPlatformGame()
{
playerObjects = new Array();
gameMode = "MainEnvironment";
stage.focus = stage;
trace("Working!");
}
// start level
public function startLevel()
{
//create characters
createPlayer();
//find and set character and items
examineLevel();
//add listeners for animation and player input
this.addEventListener(Event.ENTER_FRAME, appLoop);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownFunction);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpFunction);
// set game state
gameMode = "MainEnvironment";
}
// creates the player object and sets all properties
public function createPlayer()
{
kenny = new Object();
kenny.mc = scene.kenny;
kenny.dx = 0.0;
kenny.dy = 0.0;
//kenny.inAir = false;
kenny.direction = 1;
kenny.animstate = "stand";
kenny.walkAnimation = new Array(2,3,4);
kenny.animstep = 0;
//kenny.jump = false;
kenny.moveLeft = false;
kenny.moveRight = false;
//kenny.jumpSpeed = .8;
kenny.walkSpeed = .15;
kenny.width = 20.0;
kenny.height = 40.0;
kenny.startx = kenny.mc.x;
kenny.starty = kenny.mc.y;
}
// look at all level children and note walls, floors and items
public function examineLevel()
{
fixedObjects = new Array();
//otherObjects = new Array();
for(var i:int=0;i 15.0) verticalChange = 15.0;
char.dy += timeDiff*gravity;
// react to changes from key presses
var horizontalChange = 0;
var newAnimState:String = "stand";
var newDirection:int = char.direction;
if (char.moveLeft)
{
// walk left
horizontalChange = -char.walkSpeed*timeDiff;
newAnimState = "walk";
newDirection = -1;
} else if (char.moveRight)
{
// walk right
horizontalChange = char.walkSpeed*timeDiff;
newAnimState = "walk";
newDirection = 1;
}
// assume no wall hit by character, and character is hanging in air
//char.hitWallRight = false;
//char.hitWallLeft = false;
//char.inAir = true;
// find new vertical position
var newY:Number = char.mc.y + verticalChange;
// find new horizontal position
var newX:Number = char.mc.x + horizontalChange;
// loop through all objects to see if character has bumped into a wall
for(var i:int=0;i fixedObjects[i].topside) && (newY-char.height < fixedObjects[i].bottomside))
{
if ((char.mc.x-char.width/2 >= fixedObjects[i].rightside) && (newX-char.width/2 <= fixedObjects[i].rightside))
{
newX = fixedObjects[i].rightside+char.width/2;
char.hitWallLeft = true;
break;
}
if ((char.mc.x+char.width/2 <= fixedObjects[i].leftside) && (newX+char.width/2 >= fixedObjects[i].leftside))
{
newX = fixedObjects[i].leftside-char.width/2;
char.hitWallRight = true;
break;
}
}
}
// set position of character
char.mc.x = newX;
char.mc.y = newY;
// set animation state
//if (char.inAir)
//{
//newAnimState = "jump";
//}
char.animstate = newAnimState;
// move along walk cycle
if (char.animstate == "walk")
{
char.animstep += timeDiff/60;
if (char.animstep > char.walkAnimation.length)
{
char.animstep = 0;
}
char.mc.gotoAndStop(char.walkAnimation[Math.floor(char.animstep)]);
// not walking, show stand or jump state
} else
{
char.mc.gotoAndStop(char.animstate);
}
// changed directions
if (newDirection != char.direction)
{
char.direction = newDirection;
char.mc.scaleX = char.direction;
}
}
// scroll to the right or left if needed
public function scrollWithPlayer()
{
var stagePosition:Number = scene.x+kenny.mc.x;
var rightEdge:Number = stage.stageWidth-edgeDistance;
var leftEdge:Number = edgeDistance;
//follow character!
//check direction to enable a higher halfscreen value for edgeDistance
if (stagePosition > rightEdge && kenny.mc.scaleX > 0)
{ //facing right
scene.x -= (stagePosition-rightEdge)*(cameraSpeed/100);
}
if (stagePosition < leftEdge && kenny.mc.scaleX < 0)
{ //facing left
scene.x += (leftEdge-stagePosition)*(cameraSpeed/100);
}
//check if character has touched the limits
if (scene.x > 360)
{
scene.x = 360;
return;
}
if (scene.x < -(scene.width-stage.stageWidth))
{
scene.x = -(scene.width-stage.stageWidth);
return;
}
}
}
}
Any help would be greatly appreciated!
Thanks
Copyright Gary Rosenzweig
