これは、セカンドライフ技術系アドベントカレンダーの記事です。
セカンドライフ技術系 Advent Calendar 2014 - Adventar
今回は、Pathfindingで複数箇所を巡回させてみます。
Secondlife Pathfinding機能 - llPatrolPoints - YouTube
複数箇所を巡回させたいときは、llPatrolPoints関数を使います。
次の例では、"target"という名前のオブジェクトを周りからさがして、複数見つかった場合に、そのポイントを巡回させます。
default { state_entry() { // オブジェクトをPathfindingのキャラクターに設定 llCreateCharacter([]); } touch_start(integer num) { // タッチされたら、targetという名前のオブジェクトを探す llSensor("target", "", PASSIVE, 25.0, PI); } sensor(integer num) { // オブジェクトが1つの場合、パトロールできないので処理続行しない if(num<=1) return; integer i; list l; // targetというオブジェクト郡の位置をリストに格納 for(i=0; i<num; i++) { l += llDetectedPos(i); } // オブジェクト郡を巡視する llPatrolPoints(l, []); } no_sensor() { // targetというオブジェクトが見つからなかったら何もしない llOwnerSay("No target in range."); } }
巡回ポイントを1つしか指定しないとエラーになるので気をつけてください。llPatrolPoints関数には、リストで1つ引数を指定できます。
オプション | 説明 | デフォルト値 |
---|---|---|
PATROL_PAUSE_AT_WAYPOINTS | 巡回ポイントに到達した時、一瞬止まるようにする | FALSE |
前回の追跡に続いて、巡回を紹介しましたが、Pathfindingにはまだまだ色んな動作があります。気になったら調べてみると面白いですよ( ̄∇  ̄ )