Cirkel som følger linje
Jeg har fundet et script hvor man kan få cirklen til at følge en linje, også når linjen er roteret. Problemet kommer når jeg så roterer selve cirklen for at give effekten af at den kører. Så følger den nemlig ikke linjen mere. Nogen der har en løsning på det?Functionen checkLine afvikles fra selve linjen, når cirklen rammer.
onEnterFrame = function () {
vy += gravity;
box_mc._x += vx;
box_mc._y += vy;
box_mc._rotation += vx;
if (Key.isDown(Key.RIGHT)) {
vx += accel;
}
if (Key.isDown(Key.LEFT)) {
vx -= accel;
}
boxBund = box_mc._y;
if (boxBund>=bottom) {
box_mc._y = bottom;
vy *= bounce;
}
};
function checkLine(line:MovieClip) {
// get angle, sine and cosine
var angle:Number = line._rotation*Math.PI/180;
var cosine:Number = Math.cos(angle);
var sine:Number = Math.sin(angle);
// get position of box_mc, relative to line
var x:Number = box_mc._x-line._x;
var y:Number = box_mc._y-line._y;
// rotate line
var y1:Number = cosine*y-sine*x;
var vy1:Number = cosine*vy-sine*vx;
if (y1>-box_mc._height/2 && y1<vy1) {
// rotate line
var x1:Number = cosine*x+sine*y;
// rotate velocity
var vx1:Number = cosine*vx+sine*vy;
// perform bounce with rotated values
y1 = -box_mc._height/2;
vy1 *= bounce;
// rotate everything back
x = cosine*x1-sine*y1;
y = cosine*y1+sine*x1;
vx = cosine*vx1-sine*vy1;
vy = cosine*vy1+sine*vx1;
// reset actual box_mc position
box_mc._x = line._x+x;
box_mc._y = line._y+y;
}
}
