LlCreateCharacter/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: 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_ORIENTATION、HORIZONTAL]を使用します。
- 可能な限り垂直なカプセルを使用してください。水平のカプセルは垂直のカプセルよりも簡単に詰まる可能性があります。
- プリムからスクリプトを削除しても、パスに関する動作は停止しません。これは、粒子やホバーテキストが残るのと同様です。ただし、キャラクターがエラー状態に遭遇すると、エラーハンドリングを取得する元のスクリプトがないため、回復できません。アクティブに使用されているキャラクターからスクリプトを削除することはお勧めできません。 パスコマンドを停止するには、
llExecCharacterCmd(CHARACTER_CMD_STOP, [])
を使用します。 - ルートプリムの位置がキャラクターの地表上の高さを決定します。キャラクターが地表の下に沈んでしまうか、高すぎる場合は、ルートプリムの相対位置をリンクセットの残りに調整してください(または、キャラクターの見かけの高さを制御するために見えないようにテクスチャリングされた新しいルートプリムを作成します)。
- CHARACTER_STAY_WITHIN_PARCELのデフォルト値はCHARACTER_TYPEに依存します。
- CHARACTER_TYPEがCHARACTER_TYPE_NONE以外に設定されている場合、CHARACTER_STAY_WITHIN_PARCELのデフォルトはTRUEになります。したがって、キャラクターがパーセルの境界で停止しない場合は、常にCHARACTER_STAY_WITHIN_PARCELをFALSEに明示的に設定してください。
サンプル
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());
}
}
関連項目
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。