Physics

gravity

package com.physics {
    import com.globals;
    import flash.display.MovieClip;
    public class gravity extends movement {
        private var grav:Number;
        protected var haveAir:Boolean;
        public function gravity():void {
            ySpeed=0;
            this.grav=globals.gravity;
        } 
        protected function gravPull():void {
            ySpeed+=grav;
            haveAir=true;
        }
    }
}

movement

package com.physics{
    import flash.events.Event;
    import flash.display.MovieClip;
    public class movement extends MovieClip {
        protected var xSpeed:Number;
        protected var ySpeed:Number;
        protected var Speed:Number=1.5;
        protected var speedMax:Number;
        public function movement():void {
            xSpeed=0;
            addEventListener(Event.ENTER_FRAME, moveObj, false, 0, true);
        }
        private function moveObj(e:Event):void {
            x+=xSpeed;
            y+=ySpeed;
        }
    }
}

objMovement

package com.physics{
    import com.globals;
    import com.myMath.hitTestLine;
    public class objMovement extends gravity {
        protected var radius:Number;
        protected var right:Boolean;
        protected var left:Boolean;
        protected var wall:Boolean;
        protected var dir:int;
        protected var speedDir:int;
        public function objMovement():void {
            dir=1;
        }
        protected function movementUpdate():void {
            if (xSpeed<0) {
                speedDir=-1;
            } else {
                speedDir=1;
            }
            if (globals.levelObj.ground.hitTestPoint(x,y+ySpeed+1,true)) {
                if (haveAir) {
                    ySpeed=0;
                    haveAir=false;
                    y+=hitTestLine.getLine(x,y,globals.levelObj.ground,20,10,true,0,1);
                } else {
                    if (globals.levelObj.ground.hitTestPoint(x,y+1,true)) {
                        y-=hitTestLine.getLine(x,y,globals.levelObj.ground,20,10,false,0,-1);
                    }
                }
            } else {
                gravPull();
            }
            if (right||left||haveAir) {
            } else {
                xSpeed=xSpeed*globals.fric;
            }
            if (globals.levelObj.ground.hitTestPoint(x,y-radius+ySpeed,true)) {
                ySpeed=0;
                y+=1;
            }
            if (globals.levelObj.ground.hitTestPoint(x+(radius)*-1, y-radius, true)) {
                hitWall(-1);
            }
            if (globals.levelObj.ground.hitTestPoint(x+(radius), y-radius, true)) {
                hitWall(1);
            }
        }
        private function hitWall(side:int):void {
            if (globals.levelObj.ground.hitTestPoint(x+radius*speedDir,y-radius,true)) {
                x+=hitTestLine.getLine(x+radius*side,y-radius,globals.levelObj.ground,20,10,false,side*-1,0)*(side*-1);
                xSpeed=0;
            }
        }
    }
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License