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;
}
}
}
}
page revision: 0, last edited: 22 Oct 2010 18:25