- 締切済み
追跡のアルゴリズム
どこで質問したらいいかわからないのですが,C++で実装してるのでここに書いてみます.適切なカテゴリーがありましたら教えてくださると助かります. ゲーム開発者のためのAI入門(http://www.amazon.co.jp/exec/obidos/ASIN/4873112168/)という本でちょっとずつ勉強してます.追跡のアルゴリズムのところでうまくいかないところがあります. 直線的に移動するターゲットを捕食者(プレデター)に追跡させようとしています.時間刻みを適当にとって座標や速度,プレデターの向き(+y軸からの角度)を更新するように計算しています. 問題はプレデターの回転のところです. ターゲットの座標をプレデターのローカル座標に変換して,プレデターの進行方向(ローカル座標の+y軸方向)からみてどちら側にターゲットがいるか(ローカル座標の+x,または-x)という情報からプレデターにトルクを与えます.慣性モーメントなどは適当に決めています. 確かにターゲットがいる方向へ回転するのですが,ターゲットを正面に捕らえたころには角速度が大きすぎて回りすぎてしまい,うまく向きを制御できません. 一定の角度で回るようにすればもちろんターゲットを正面に捕らえて直進してくれるのですが,それでは旋回のしかたが現実的でない感じがします.回転はあくまでトルクで実現したいです. ターゲットを正面に捕らえるころには角速度をゼロに近づけるようにするにはどういった手段があるでしょうか.イメージとしては逆噴射みたいな感じで逆方向の角加速度を与えてあげればいいのかとも思いますが... 説明がうまくできなかったのでわかりづらいかと思いますが,よろしくお願いします. 意味がわからないことがあったらきいてくださればすぐに書きます.
- みんなの回答 (2)
- 専門家の回答
お礼
確かにその通りですね. ありがとうございます.