博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《AdvancED ActionScript 3.0 Animation》读书笔记(1) —— 转向行为
阅读量:5239 次
发布时间:2019-06-14

本文共 2177 字,大约阅读时间需要 7 分钟。

1)寻找:

public function seek(target: Vector2D): void

{

var desiredVelocity: Vector2D = target.subtract(_position);

desiredVelocity.normalize();

desiredVelocity = desiredVelocity.multiply(_maxSpeed);

var force: Vector2D = desiredVelocity.subtract(_velocity);

_steeringForce = _steeringForce.add(force);

}

2)避开:

public function flee(target: Vector2D): void

{

var desiredVelocity: Vector2D = target.subtract(_position);

desiredVelocity.normalize();

desiredVelocity = desiredVelocity.multiply(_maxSpeed);

var force: Vector2D = desiredVelocity.subtract(_velocity);

_steeringForce = _steeringForce.subtract(force);

}

3)到达:

public function arrive(target: Vector2D): void

{

var desiredVelocity: Vector2D = target.subtract(_position);

desiredVelocity.normalize();

var dist: Number = _position.dist(target);

if(dist > _arrivalThreshold)

{

desiredVelocity = desiredVelocity.multiply(_maxSpeed);

}

else

{

desiredVelocity = desiredVelocity.multiply(_maxSpeed * dist /

_arrivalThreshold);

}

var force: Vector2D = desiredVelocity.subtract(_velocity);

_steeringForce = _steeringForce.add(force);

}

4)追捕:

public function pursue(target: Vehicle): void

{

var lookAheadTime: Number = position.dist(target.position) / _maxSpeed;

var predictedTarget: Vector2D =

target.position.add(target.velocity.multiply(lookAheadTime));

seek(predictedTarget);

}

5)躲避:

public function evade(target: Vehicle): void

{

var lookAheadTime: Number = position.dist(target.position) / _maxSpeed;

var predictedTarget: Vector2D =

target.position.add(target.velocity.multiply(lookAheadTime));

flee(predictedTarget);

}

6)漫游:

d31b0ef41bd5ad6e5c9a046581cb39dbb7fd3cd9.jpg

init (){

private var _wanderAngle: Number = 0;

private var _wanderDistance: Number = 10;

private var _wanderRadius: Number = 5;

private var _wanderRange: Number = 1;

}

public function wander(): void

{

var center: Vector2D = velocity.clone().normalize().multiply(_wanderDistance);

var offset: Vector2D = new Vector2D(0);

offset.length = _wanderRadius;

offset.angle = _wanderAngle;

_wanderAngle += Math.random() * _wanderRange - _wanderRange * .5;

var force: Vector2D = center.add(offset);

_steeringForce = _steeringForce.add(force);

}

转载于:https://www.cnblogs.com/cly84920/archive/2012/10/15/4426490.html

你可能感兴趣的文章
作业完成2
查看>>
PHP截取中英文混合字符
查看>>
HTA - OnKeyDown
查看>>
【洛谷P1816 忠诚】线段树
查看>>
CDN 学习笔记
查看>>
电子眼抓拍大解密
查看>>
Linux系统下 /etc/shadow 档案结构
查看>>
多线程---线程间的通信
查看>>
poj 1331 Multiply
查看>>
严重: 文档无效: 找不到语法。 at (null:2:19)
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
nodejs-Path模块
查看>>
P1107 最大整数
查看>>
EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体服务器,EasyPlayer手机播放器...
查看>>
监控CPU和内存的使用
查看>>
Ubuntu14.04设置开机自启动程序
查看>>
ios app 单元测试 自动化测试
查看>>
年薪二十万
查看>>
强连通tarjan模版
查看>>