追求行動
実行例
ソースコード
TypeScript
解説/アルゴリズム
export function seek(v: Vehicle, target: p5.Vector): void {
const desiredVelocity = p5.Vector.sub(target, v.position);
desiredVelocity.limit(v.maxSpeed);
const force = p5.Vector.sub(desiredVelocity, v.velocity);
v.acceleration.add(force);
}
この追求行動(seek)では、引数に渡した位置に向けて、現在位置から 1 フレームで移動できるだけ移動しようという行動となる。
desiredVelocity.limit(v.maxSpeed);
現在位置(position)から目標位置(target)までのベクトルを求める。
desiredVelocity.limit(v.maxSpeed);
1 フレームで移動できる距離を求めるため、maxSpeed でベクトルの制限を行う。
const force = p5.Vector.sub(desiredVelocity, v.velocity);
v.acceleration.add(force);
上で求めた速度と今現在の速度の差分を求め、加速度に加える。