私は追跡ゲームを作りたいです。ユーザーが手紙(手紙のパス)をたどると、私の円がその道をたどるようにしたい。ユーザーが戻って、私はパスをトレースすると、既に定義済みのパスに沿ってマウスフォロワのスムーズな動きを作成する方法は?
import flash.events.Event;
import flash.geom.Point;
var i: Number;
var size: int = 80;
var down: Boolean = false;
var up: Boolean = true;
var inside: Boolean = true;
var outside: Boolean = true;
var circle: Shape = new Shape();
stage.addEventListener(Event.ENTER_FRAME, loop);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseup);
char.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
function loop(e: Event) {
if (down == true) {
// Checks if mouse pointer is on path i.e 'S' alphabet
if (s.hitTestPoint(stage.mouseX, stage.mouseY, true)) {
inside = true;
outside = true;
var point: Point = maskobj.globalToLocal(new Point(stage.mouseX, stage.mouseY));
var point2: Point = new Point();
//Checks if mouse pointer is completely outside of drawn area
for (i = 0; i < 2 * Math.PI; i += (2 * Math.PI)/10) {
point2.x = stage.mouseX + (size/3) * Math.cos(i);
point2.y = stage.mouseY + (size/3) * Math.sin(i);
if ((maskobj.hitTestPoint(point2.x, point2.y, true))) {
outside = false;
break;
}
}
//Checks if mouse pointer is completely inside drawn area
for (i = 0; i < 2 * Math.PI; i += (2 * Math.PI)/10) {
point2.x = stage.mouseX + (size/3) * Math.cos(i);
point2.y = stage.mouseY + (size/3) * Math.sin(i);
if (!(maskobj.hitTestPoint(point2.x, point2.y, true))) {
inside = false;
break;
}
}
//Character will be moved only if mouse position not to far from current position
if (outside == false) {
if (inside == false) {
//Increases drawn area by drawing a circle shape in 'maskobj' MovieClip
circle.graphics.beginFill(0x0000ff);
circle.graphics.drawCircle(point.x, point.y, size);
circle.graphics.endFill();
maskobj.addChild(circle);
//Moves character to new position
char.x = stage.mouseX;
char.y = stage.mouseY;
}
}
}
}
}
function mouseup(e: MouseEvent): void {
up = true;
down = false;
}
function mousedown(e: MouseEvent): void {
down = true;
up = false;
}
をトレースしているエリアに行くことができない、動きがスムーズではありません。誰かが動きをスムーズにする方法を提案しても、それを達成する別の方法を提案することはできますか?前もって感謝します。
私がそれをよく理解していれば、赤い円が何らかの形で振動して滑らかではないという問題があります。パス上のドット数をトゥイーンに設定することができます。振動が少なくなるはずです。それがうまくいかない場合は、より良い方法でそれを解決する必要があります。 – HITMAN
それがうまくいかない場合は、おそらくドット間の滑らかな方法を使用する数学を使用する必要があります。ペンツールのように。 – HITMAN