みさご解体新書

追求行動

実行例

実行結果を見る

ソースコード

TypeScript

vehicle.ts / app.ts

解説/アルゴリズム

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);

上で求めた速度と今現在の速度の差分を求め、加速度に加える。