Im in the works of making a super simple platform game engine...
and wanted to see if anyone wants to help out/has some ideas/knows why im going to absolutely fail...
anyways its only 154 lines of script or something like that right now, and its functional enough to see the idea...
Im having a little trouble with the walls, and setting up a loop to hit test all the objects instead of a long or statement...
anyways INPUT IS APPRECIATED GREATLY!
and it would be nice if someone could point out how to do the hittests better...
var xspeed = 0;
var yspeed = 0;
var accelleration = 2;
var friction = 0.95;
var maxspeed = 5;
var gravity = 0.25;
var jumpdelay = 0;
var leftKeyDown:Boolean = false;
var upKeyDown:Boolean = false;
var rightKeyDown:Boolean = false;
var downKeyDown:Boolean = false;
var groundcontact:Boolean = false;
var climbingstatus:Boolean = false;
addEventListener(Event.ENTER_FRAME,enterframe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown);
function checkKeysDown(event:KeyboardEvent):void
{
//making the booleans true based on the keycode
//WASD Keys or arrow keys
if (event.keyCode == 37 || event.keyCode == 65)
{
leftKeyDown = true;
}
if (event.keyCode == 38 || event.keyCode == 87)
{
upKeyDown = true;
}
if (event.keyCode == 39 || event.keyCode == 68)
{
rightKeyDown = true;
}
if (event.keyCode == 40 || event.keyCode == 83)
{
downKeyDown = true;
}
}
//this listener will listen for keys being released
stage.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp);
function checkKeysUp(event:KeyboardEvent):void
{
//making the booleans false based on the keycode
if (event.keyCode == 37 || event.keyCode == 65)
{
leftKeyDown = false;
}
if (event.keyCode == 38 || event.keyCode == 87)
{
upKeyDown = false;
}
if (event.keyCode == 39 || event.keyCode == 68)
{
rightKeyDown = false;
}
if (event.keyCode == 40 || event.keyCode == 83)
{
downKeyDown = false;
}
}
function enterframe(event:Event)
{
if (jumpdelay >= 120)
{
ok this Original programing was not going to do the trick...
so I am revamping the system and it is working a lot better...
Umm, still having slight trouble with the way the character reacts when it hits a wall going side to side, Im about to add the tracking for the head also...
afterwards the goal now it to make it so that I can keep track of registered points of a movieclip inside a movie clip for things like the feet, which will allow rotation of the character and slanted surfaces with rotation of the main character to stand on these surfaces...
var xspeed = 0;
var yspeed = 0;
var accelleration = 2;
var friction = 0.95;
var maxspeed = 5;
var gravity = 0.25;
var jumpdelay = 0;
var leftKeyDown:Boolean = false;
var upKeyDown:Boolean = false;
var rightKeyDown:Boolean = false;
var downKeyDown:Boolean = false;
var centerGC:Boolean = false;
var leftlegGC:Boolean = false;
var rightlegGC:Boolean = false;
var leftarmC:Boolean = false;
var rightarmC:Boolean = false;
var climbingstatus:Boolean = false;
addEventListener(Event.ENTER_FRAME,enterframe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown);
function checkKeysDown(event:KeyboardEvent):void
{
//making the booleans true based on the keycode
//WASD Keys or arrow keys
if (event.keyCode == 37 || event.keyCode == 65)
{
leftKeyDown = true;
}
if (event.keyCode == 38 || event.keyCode == 87)
{
upKeyDown = true;
}
if (event.keyCode == 39 || event.keyCode == 68)
{
rightKeyDown = true;
}
if (event.keyCode == 40 || event.keyCode == 83)
{
downKeyDown = true;
}
}
//this listener will listen for keys being released
stage.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp);
function checkKeysUp(event:KeyboardEvent):void
{
//making the booleans false based on the keycode
if (event.keyCode == 37 || event.keyCode == 65)
{
leftKeyDown = false;
}
if (event.keyCode == 38 || event.keyCode == 87)
{
upKeyDown = false;
}
if (event.keyCode == 39 || event.keyCode == 68)
{
rightKeyDown = false;
}
if (event.keyCode == 40 || event.keyCode == 83)
{
downKeyDown = false;
}
}
function enterframe(event:Event)
{
var leftLegx:int = player_mc.x - 14;
var leftLegy:int = player_mc.y + 20;
var rightLegx:int = player_mc.x + 14;
var rightLegy:int = player_mc.y + 20;
var centerx:int = player_mc.x;
var centery:int = player_mc.y + 19;
var leftarmx:int = player_mc.x - 20;
var leftarmy:int = player_mc.y - 5;
var rightarmx:int = player_mc.x + 20;
var rightarmy:int = player_mc.y - 5;
makes a huge difference in the reaction of the impact on vertical surfaces.
my assignment to you guys is to make these things react better and look for ways to improve the script and the reaction to "walls"
*****EDIT
yea I looked at it and actually thought about it and came up with the replacement function, that takes away the repetitive script of the arm check... also it is much more efficient!
function wallhit(){
if (stage_mc.block_mc.hitTestPoint(leftarmx,leftarmy, true))
{
if (xspeed >= 1.5)
{
xspeed *= -0.5;
}
else if (xspeed<=0.5)
{
xspeed -= 1;
}
else
{
xspeed -= 0.5;
}
}
else if (stage_mc.block_mc.hitTestPoint(rightarmx,rightarm y,true))
{
if (xspeed >= 1.5)
{
xspeed *= -0.5;
}
else if (xspeed<=0.5)
{
xspeed += 1;
}
else
{
xspeed += 0.5;
}
}
}
let me know if yall can help me out with the error im getting when the character is in contact with the ground while in the water.
var xspeed = 0;
var yspeed = 0;
var accelleration = 2;
var friction = 0.95;
var maxspeed = 5;
var gravity = 0.25;
var jumpdelay = 0;
var leftKeyDown:Boolean = false;
var upKeyDown:Boolean = false;
var rightKeyDown:Boolean = false;
var downKeyDown:Boolean = false;
//charicter States
var centerGC:Boolean = false;
var leftlegGC:Boolean = false;
var rightlegGC:Boolean = false;
var bodyinwater:Boolean = false;
var headinwater:Boolean = false;
var climbingstatus:Boolean = false;
addEventListener(Event.ENTER_FRAME,enterframe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown);
function checkKeysDown(event:KeyboardEvent):void
{
//making the booleans true based on the keycode
//WASD Keys or arrow keys
if (event.keyCode == 37 || event.keyCode == 65)
{
leftKeyDown = true;
}
if (event.keyCode == 38 || event.keyCode == 87)
{
upKeyDown = true;
}
if (event.keyCode == 39 || event.keyCode == 68)
{
rightKeyDown = true;
}
if (event.keyCode == 40 || event.keyCode == 83)
{
downKeyDown = true;
}
}
//this listener will listen for keys being released
stage.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp);
function checkKeysUp(event:KeyboardEvent):void
{
//making the booleans false based on the keycode
if (event.keyCode == 37 || event.keyCode == 65)
{
leftKeyDown = false;
}
if (event.keyCode == 38 || event.keyCode == 87)
{
upKeyDown = false;
}
if (event.keyCode == 39 || event.keyCode == 68)
{
rightKeyDown = false;
}
if (event.keyCode == 40 || event.keyCode == 83)
{
downKeyDown = false;
}
}
//main Engine
function enterframe(event:Event)
{
//Charicter Hit test definitions
var leftLegx:int = player_mc.x - 14;
var leftLegy:int = player_mc.y + 20;
var rightLegx:int = player_mc.x + 14;
var rightLegy:int = player_mc.y + 20;
var centerx:int = player_mc.x;
var centery:int = player_mc.y + 19;
var leftarmx:int = player_mc.x - 20;
var leftarmy:int = player_mc.y - 5;
var rightarmx:int = player_mc.x + 20;
var rightarmy:int = player_mc.y - 5;
var headx:int = player_mc.x;
var heady:int = player_mc.y - 20;
//jump delay
if (bodyinwater == true && headinwater == true)
{
if (upKeyDown == true)
{
yspeed += 0.25;
if (yspeed >= 1.75)
{
yspeed = 1.75;
}
}
}
else
{
if (jumpdelay >= 60)
{
let me know if yall can help me out with the error im getting when the character is in contact with the ground while in the water.
Actionscript Code:
var xspeed = 0; var yspeed = 0; var accelleration = 2; var friction = 0.95; var maxspeed = 5; var gravity = 0.25; var jumpdelay = 0; var leftKeyDown:Boolean = false; var upKeyDown:Boolean = false; var rightKeyDown:Boolean = false; var downKeyDown:Boolean = false;
//charicter States var centerGC:Boolean = false; var leftlegGC:Boolean = false; var rightlegGC:Boolean = false; var bodyinwater:Boolean = false; var headinwater:Boolean = false; var climbingstatus:Boolean = false;