所以我有一个对象,我想追逐另一个对象。一切都工作正常,但我试图实现一个easeTo函数,使对象不会采取最直接的路径到它追逐的对象的x,y位置。这也是有效的,但是我无法解决的事实是,物体速度的变化取决于它追逐的物体的距离。例如,如果被追逐的对象位于舞台的最右侧并且追踪器在最左侧产生,则它将非常快地朝向右侧的对象,并且当它靠近时减慢。我希望它以一致的速度前进。有什么建议吗?
由于
这是我的代码
private function easeTo(cur:Point, target:Point, ease:Number):Point{
var dx:Number = target.x - cur.x;
var dy:Number = target.y - cur.y;
var finalResult:Point = new Point(); //create a var to hold the result
finalResult.x = cur.x + (dx * ease);
finalResult.y = cur.y + (dy * ease);
return finalResult;
}
public function chase(xValue:Number, yValue:Number):void{
//store current x and y in a point var
var curPos:Point = new Point (x,y);
//store the mouse x and y in a var
var targetPos:Point = new Point(xValue, yValue);
var nextPos:Point = easeTo(curPos, targetPos, 0.001);
this.x = nextPos.x;
this.y = nextPos.y;
}
所以(xValue:Number,yValue:Number)是它追逐传递给chase函数的对象的x和y值。
答案 0 :(得分:0)
我建议使用Math.min(当dx或dy为负时)和Math.max(当dx或dy为正时),并将您定义的值设为最大速度
即:
var maxSpeed:Number = 20;
if (dx >= 0){
dx = Math.max(dx,maxSpeed)
}else{
dx = Math.min(dx,maxSpeed)
}
重复dy