《AdvancED ActionScript 3.0 Animation》读书笔记(1) —— 转向行为

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值