我正在为一个学校项目制作游戏。这个概念非常简单,您需要修复电路线(矩形形状的路径),以便电流可以通过电路并点亮灯泡。
我正试图找到一种方法,让你可以让电影剪辑穿越电线。我已经看过很多教程,他们说明了运动路径的坐标和角度,但我想让它成为影片剪辑将自动跟随舞台上的形状路径,所以即使路径发生变化(针对不同的级别),影片剪辑仍然会遵循该路径。目前,我所能做的就是在影片剪辑中创建一个预定义的引导路径,跟踪路径。
后续问题: 还有一种方法可以检测形状路径是否完整?系统将检查电线是否相互连接。
答案 0 :(得分:0)
如果你想看看你的'形状'是否完整: 你可以创建一个布尔变量向量(每个变量都表示你的导线的一个节点 - 连接时你将变量设置为true),你需要一个函数来检查vector中的所有变量是否为真(带循环),意味着你的形状是完整的。希望这个想法有所帮助
答案 1 :(得分:0)
你应该在移动你想要的东西之前进行元数据计算,这样你首先要计算你的谜题是否已经解决,一旦你确定了你的可移动物体应该停止并显示错误的点,然后用简单的部分创建一个路径,然后让你的对象逐个移动直到最后一点,然后显示结果。这是一般的想法。按部分移动对象的简单代码如下所示:
var sections:Vector.<Point>; // we need x&y sequence. Fill this prior to launching the routine
var position:int=0; // where are we now
var velocity:int=8; // pixels per frame, adjust as needed
movable.addEventListener(Event.ENTER_FRAME,moveABit);
function moveABit(e:Event):void {
var nextPoint:Point=sections[position];
var do:DisplayObject=e.target as DisplayObject; // what we are moving
var here:Point=new Point(do.x,do.y);
if (Point.distance(here,nextPoint)<velocity) {
// this means we are too close to interpolate, just place
do.x=nextPoint.x;
do.y=nextPoint.y;
position++;
if (position>=sections.length) {
// movement finished
// TODO make your final animation
do.removeEventListener(Event.ENTER_FRAME,moveABit); // stop moving
}
} else {
// interpolate movement
var angle:Number=Math.atan2(nextPoint.y-here.y,nextPoint.x-here.x);
do.x+=Math.cos(angle)*velocity;
do.y+=Math.sin(angle)*velocity;
// if the object will move to wrong direction, fix this code!
}
}