LlCreateCharacter/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llCreateCharacter( list options );

オブジェクトに含まれるスクリプトから、パスファインディング エンティティ(「キャラクター」と呼ばれる)を作成します。パスファインディング関数の使用を有効にするために必要です。

• list options Character configuration options.

デフォルトでは、キャラクターの形状は、リンクセットのサイズにほぼ一致する垂直なカプセルになります。このサイズはオプションリストを介して調整できます。リンクセットはメッシュプロジェクトで導入されたランドインパクトの計算システムを使用する必要があります。 既存のキャラクターで呼び出された場合、キャラクターサイズ以外の未指定のパラメータはデフォルトに戻ります(指定されていない場合、キャラクターサイズは変更されません)。これは、[llDeleteCharacter] を呼び出してから [llCreateCharacter] を呼び出す代わりに非常に強く推奨されます。サーバーへの負荷がはるかに少ないためです。

オプション デフォルト Range / Values 説明
CHARACTER_DESIRED_SPEED 1 6 [0.2, 40.0] 追跡速度(メートル毎秒)
CHARACTER_RADIUS 2 [0.125, 5.0] 衝突カプセルの半径を設定します。
CHARACTER_LENGTH 3 (0.0, 10.0] 衝突カプセルの長さを設定します。

値が半径の2倍に0.1mを加えたものより小さい場合、それは半径の2倍に0.1mに設定されます。

CHARACTER_ORIENTATION 4 VERTICAL VERTICAL, HORIZONTAL キャラクターの向きを設定します。
TRAVERSAL_TYPE 7 TRAVERSAL_TYPE_SLOW TRAVERSAL_TYPE_FAST, TRAVERSAL_TYPE_SLOW, TRAVERSAL_TYPE_NONE 100%歩行可能でない地形でのキャラクターの移動速度を制御します。速く移動する(例:道路を横断する猫)か遅く移動する(例:沼地を走る車)かを指定します。

_FASTまたは_SLOWを使用するには、CHARACTER_TYPEを指定する必要があります。

CHARACTER_TYPE 6 CHARACTER_TYPE_NONE CHARACTER_TYPE_A, CHARACTER_TYPE_B, CHARACTER_TYPE_C, CHARACTER_TYPE_D, CHARACTER_TYPE_NONE このキャラクターで使用される歩行可能係数を指定します。
CHARACTER_AVOIDANCE_MODE 5 AVOID_CHARACTERS | AVOID_DYNAMIC_OBSTACLES 組み合わせ可能なフラグ: AVOID_CHARACTERS, AVOID_DYNAMIC_OBSTACLES, AVOID_NONE キャラクターが他のキャラクターを避けないように、動的な障害物(比較的速い移動オブジェクトおよびアバター)を避けないように、またはその両方を指定できます。これは肯定的な意味でフレーム化されています([CHARACTER_AVOIDANCE_MODE, AVOID_CHARACTERS]は他のキャラクターを避けるがエージェントや動く車両を避けないキャラクターを作成します)。このパラメータをAVOID_NONEに設定すると、キャラクターはいずれのカテゴリも避けません。
CHARACTER_MAX_ACCEL 8 20 [0.5, 40.0] キャラクターの最大加速度。
CHARACTER_MAX_DECEL 9 30 [0.5, 60.0] キャラクターの最大減速度。
CHARACTER_DESIRED_TURN_SPEED 12 6 [0.02, 40.0] キャラクターの旋回時の最大速度--注意:これは緩く制約されています(つまり、特定の条件下でキャラクターはより高い速度で旋回する可能性があります)
CHARACTER_MAX_TURN_RADIUS 10 1.25 [0.1, 10.0] CHARACTER_DESIRED_TURN_SPEEDで移動する際のキャラクターの旋回半径
CHARACTER_MAX_SPEED 13 20 [1, 40.0] キャラクターの最大速度。動的な障害物を回避するときやTRAVERSAL_TYPE_FASTモードで低い歩行可能なオブジェクトを通過するときの速度に影響します。
CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES 14 TRUE TRUE or FALSE TRUEは既存の動作に一致します。FALSEに設定すると、パスファインディングのパフォーマンスが低い場合にキャラクターは失われた時間を取り戻そうとはしません。これにより、より信頼性のある移動が提供されるかもしれません(ただし、よりスタッタリーに見えるかもしれません)。
CHARACTER_STAY_WITHIN_PARCEL 15 Depends* TRUE or FALSE FALSEは従来の動作に一致します。TRUEに設定すると、パーセルの境界を片側の障害物として扱います(再入ることはできますが、自分自身では出られません)。

警告

(変更の可能性あり)

  • 1つのオブジェクトにつき1回のみllCreateCharacter呼び出しが必要であり、複数回呼び出しても効果はありません。
  • 1つのスクリプトにはllCreateCharacter呼び出しを含めることができ、他のスクリプトはそれを他のパス関数と一緒に利用できます。
  • llCreateCharacterのステータスはステートの変更、スクリプトのリセット、および再生成を生き抜きます。
  • llCreateCharacterは常に、すべてのパス関数に必要です。
  • オブジェクトがキャラクターになると、その物理ウェイトは15に固定されます。
  • 同じオブジェクト内にllCreateCharacterを含む複数のスクリプトがあっても、問題は発生しません。
  • 複数のスクリプトが同じオブジェクト内で競合するパス関数を使用する場合(異なるプリムまたは同じプリム)、ランダムに優先されるスクリプトがあります(らしい)。
  • CHARACTER_MAX_SPEED - PATHBUG-42を参照 - テストでは、所望の速度が10m/sで十分速いことがわかり、より高い速度は予期しない結果を生む可能性がある(特に狭いスペースを移動したり、急なターンをする場合)。 2012年3月15日
  • CHARACTER_MAX_ANGULAR_ACCEL min = 1.5708
  • キャラクターの形状はカプセル(球状のエンドがある円柱)で、長さ(先端から先端まで)とある半径の円断面があります。これら2つのサイズパラメータはそれぞれCHARACTER_LENGTHおよびCHARACTER_RADIUSで制御されます。
  • キャラクターの実際の "長さ" は、半径の2倍に0.1mを加えたものより小さくすることはできません。ただし、それよりも小さい値を指定しても(ゼロより大きい場合)、スクリプトはエラーを報告しません。
  • 通常、カプセルは垂直方向に向けられています。キャラクターを水平にする必要がある場合は、[CHARACTER_ORIENTATIONHORIZONTAL]を使用します。
    • 可能な限り垂直なカプセルを使用してください。水平のカプセルは垂直のカプセルよりも簡単に詰まる可能性があります。
  • プリムからスクリプトを削除しても、パスに関する動作は停止しません。これは、粒子やホバーテキストが残るのと同様です。ただし、キャラクターがエラー状態に遭遇すると、エラーハンドリングを取得する元のスクリプトがないため、回復できません。アクティブに使用されているキャラクターからスクリプトを削除することはお勧めできません。 パスコマンドを停止するには、llExecCharacterCmd(CHARACTER_CMD_STOP, [])を使用します。
  • ルートプリムの位置がキャラクターの地表上の高さを決定します。キャラクターが地表の下に沈んでしまうか、高すぎる場合は、ルートプリムの相対位置をリンクセットの残りに調整してください(または、キャラクターの見かけの高さを制御するために見えないようにテクスチャリングされた新しいルートプリムを作成します)。
  • CHARACTER_STAY_WITHIN_PARCELのデフォルト値はCHARACTER_TYPEに依存します。

サンプル

create_character()
{
//  Clear any previous character behaviors
    llDeleteCharacter();

//  MAX_SPEED is @ 20 by default
    llCreateCharacter([ CHARACTER_MAX_SPEED, 25,
                        CHARACTER_DESIRED_SPEED, 15.0]);
}

patrol_around(vector targetPos)
{
    list points = [targetPos + <5, 0, 0>, targetPos - <5, 0, 0>];
    llPatrolPoints(points, []);
}

default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }

    state_entry()
    {
        create_character();
    }
 
    touch_start(integer num_detected)
    {
        patrol_around(llGetPos());
    }
}

特記事項

経緯

Date of Release 31/07/2012

Search JIRA for related Issues

脚注

  1. ^ 記事中の範囲は、 実数空間 に記載されているものです。

Signature

function void llCreateCharacter( list options );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。