本文主要是介绍[AI-Steering编程]六.躲避行为,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
六.躲避行为
你应该意见猜到了,躲避行为是追捕的反行为,它与追捕的不同点在于,追捕是在seek”未来目标”,而躲避是在flee”未来目标”:
public function evade(target:Vehicle):void {
var lookAheadTime:Number = target.position.dist(_position) / _maxSpeed;
//计算此时追上目标的预计时间,即lookAheadTime.
var predictedTarget:Vector2D = target.position.add(target.velocity.multiply(lookAheadTime));
//在这段时间内,目标以现在的速度,预计会到达的位置,即"未来目标"
flee(predictedTarget);
//避开这个"未来目标"
6-1-Evade.swf (4.27 KB)
在示例” 6-1-Evade.swf”中,我创建了两对儿机车,红色机车seeker,白色机车fleer,以及绿色的机车evader,蓝色的机车pursuer.他们之间的关系是
fleer.flee(seeker.position);
fleer.update();
seeker.seek(fleer.position);
seeker.update();
pursuer.seek(evader.position);
pursuer.update();
evader.evade(pursuer);
evader.update();
通过上面的示例,可以看到白色的机车fleer,在傻乎乎的flee红色的seeker,红色的机车seeker在后面追,白色的fleer就往前跑.而绿色的evader就很”狡猾”的躲避蓝色的pursuer,这有点像篮球的变向过人,知道pursuer会往那个地方追我,我就来个急转弯,避开它!
文档Evade类如下:
package
{
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import ladeng6666.steering.Vector2D;
import ladeng6666.steering.Vehicle;
import ladeng6666.steering.TargetObj;
public class Evade extends Sprite
{
private var fleer:Vehicle; //机车实例
private var seeker:Vehicle; //添加红色的机车,来seek白色的机车
private var pursuer:Vehicle //添加蓝色的的机车,来pursue白色的机车
private var evader:Vehicle; //创建绿色的机车,来evade蓝色pursuer的寻找
public function Evade()
{
fleer = new Vehicle();
fleer.position = new Vector2D(100, 200);
fleer.edgeBehavior = Vehicle.BOUNCE;
seeker = new Vehicle(0xff0000);
seeker.edgeBehavior = Vehicle.BOUNCE;
pursuer = new Vehicle(0x0000ff);
evader = new Vehicle(0x00ff00);
evader.position = new Vector2D(100, 200);
evader.edgeBehavior = Vehicle.BOUNCE;
addChild(fleer);
addChild(seeker);
addChild(pursuer);
addChild(evader);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
//按照帧频随速度更新机车的位置
private function enterFrameHandler(e:Event):void {
fleer.flee(seeker.position);
fleer.update();
seeker.seek(fleer.position);
seeker.update();
pursuer.seek(evader.position);
pursuer.update();
evader.evade(pursuer);
evader.update();
}
}
}
本章源代码:
chapter6.rar (15.53 KB)
这篇关于[AI-Steering编程]六.躲避行为的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!