PathFindingで、自分についてくるオブジェクトをつくる
これは、セカンドライフ技術系アドベントカレンダー向けの記事です。
自分についてくるオブジェクトは、今までも力技でつくれたんですが、最近追加されたPathFindingを使うと、とても簡単に実装できます。
Secondlife Pathfinding機能 - llPursue - YouTube
PathFindingは、直訳すると経路探索ですが、色んな動きができるNPC(ノンプレイヤーキャラクター)を作れる機能になっています。自分についてくる他にも、何かから逃げる動きをさせたり、特定の場所を徘徊させたりもできます。
何かについてくるようにしたい場合は、次のようにすればできます。
default { state_entry() { // オブジェクトをPathfindingのキャラクターに設定 // 実際には引数には色んなパラメータが渡せます llCreateCharacter([]); } touch_start(integer total_number) { // タッチした人の2m後ろを追跡する llPursue(llDetectedKey(0), [PURSUIT_OFFSET, <-2.0, 0.0, 0.0>]); } }
たったこれだけ、llCreateCharacter関数で、Pathfindingのキャラクターとして設定し、llPursue関数で追跡させるように命令すればOKです。llPursue関数にもリストでいくつかの引数が渡せます。
オプション | 説明 | デフォルト値 |
---|---|---|
PURSUIT_OFFSET | 追跡対象からの距離 | ZERO_VECTOR |
REQUIRE_LINE_OF_SIGHT | 動作するのに物理的に到達可能である必要があるか | FALSE |
PURSUIT_FUZZ_FACTOR | PURSUIT_OFFSETからランダムで位置をずらす、0.0~1.0で指定 | 0.0 |
PURSUIT_INTERCEPT | ターゲットの未来の位置を予測して動くか | FALSE |
PURSUIT_GOAL_TOLERANCE | 実際のゴールからどれくらい離れてるのを許容するか | 追跡者の大きさに比例 |
とても簡単に高度な動きが実装できるので、試してみると面白いとおもいますよ( ̄∇  ̄ )