LlCreateCharacter/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llCreateCharacter( list options );

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

• list options Character configuration options.

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

Option Default Range / Values Description
CHARACTER_DESIRED_SPEED 1 6 [0.2, 40.0] Speed of pursuit in meters per second.
CHARACTER_RADIUS 2 [0.125, 5.0] Set collision capsule radius.
CHARACTER_LENGTH 3 (0.0, 10.0] Set collision capsule length

If the value is less than twice the radius plus 0.1m, it will be set to twice the radius plus 0.1m.

CHARACTER_ORIENTATION 4 VERTICAL VERTICAL, HORIZONTAL Set the character orientation.
TRAVERSAL_TYPE 7 TRAVERSAL_TYPE_SLOW TRAVERSAL_TYPE_FAST, TRAVERSAL_TYPE_SLOW, TRAVERSAL_TYPE_NONE Controls the speed at which characters moves on terrain that is less than 100% walkable will move faster (e.g., a cat crossing a street) or slower (e.g., a car driving in a swamp).

To use _FAST or _SLOW, you must specify a CHARACTER_TYPE.

CHARACTER_TYPE 6 CHARACTER_TYPE_NONE CHARACTER_TYPE_A, CHARACTER_TYPE_B, CHARACTER_TYPE_C, CHARACTER_TYPE_D, CHARACTER_TYPE_NONE Specifies which walkability coefficient will be used by this character.
CHARACTER_AVOIDANCE_MODE 5 AVOID_CHARACTERS | AVOID_DYNAMIC_OBSTACLES Combinable Flags: AVOID_CHARACTERS, AVOID_DYNAMIC_OBSTACLES, AVOID_NONE Allows you to specify that a character should not try to avoid other characters, should not try to avoid dynamic obstacles (relatively fast moving objects and avatars), or both. This is framed in the positive sense ([CHARACTER_AVOIDANCE_MODE, AVOID_CHARACTERS] would create a character that avoided other characters but not agents or moving vehicles). Setting this parameter to AVOID_NONE causes the character to not avoid either category.
CHARACTER_MAX_ACCEL 8 20 [0.5, 40.0] The character's maximum acceleration rate.
CHARACTER_MAX_DECEL 9 30 [0.5, 60.0] The character's maximum deceleration rate.
CHARACTER_DESIRED_TURN_SPEED 12 6 [0.02, 40.0] The character's maximum speed while turning--note that this is only loosely enforced (i.e., a character may turn at higher speeds under certain conditions)
CHARACTER_MAX_TURN_RADIUS 10 1.25 [0.1, 10.0] The character's turn radius when traveling at CHARACTER_DESIRED_TURN_SPEED
CHARACTER_MAX_SPEED 13 20 [1, 40.0] The character's maximum speed. Affects speed when avoiding dynamic obstacles and when traversing low-walkability objects in TRAVERSAL_TYPE_FAST mode.
CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES 14 TRUE TRUE or FALSE TRUE matches pre-existing behavior. If set to FALSE, character will not attempt to catch up on lost time when pathfinding performance is low, potentially providing more reliable movement (albeit while potentially appearing to be more stuttery).
CHARACTER_STAY_WITHIN_PARCEL 15 Depends* TRUE or FALSE FALSE matches traditional behavior. If set to TRUE, treat the parcel boundaries as one-way obstacles (will re-enter but can't leave on it's own).

警告

(subject to change)

  • オブジェクトごとに llCreateCharacter を1回だけ使用する必要があり、複数回呼び出しても効果はありません。
  • 1つのスクリプトには llCreateCharacter 呼び出しが含まれ、他のスクリプトがそれを使用して他のパス関数を利用できます。
  • llCreateCharacter の状態は、ステートの変更、スクリプトのリセット、および再配置にも生存します。
  • llCreateCharacter は常にすべてのパス関数で必要です。
  • オブジェクトがキャラクターになると、その 物理ウェイト は固定され、15になります。
  • 同じオブジェクトに複数のスクリプトが含まれている場合、特に問題は発生しません。
  • 複数のスクリプトが同じオブジェクト(異なるプリムまたは同じプリム)で競合するパス関数を使用する場合、ランダムに優先されます(明らかに)。
  • 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を加えたものより小さくすることはできませんが、それより低い値を指定することは歓迎されます(ただし0より大きい)。 スクリプトはクレームを言うべきではありません。
  • 通常、カプセルは垂直に向けられています。キャラクターを水平にしたい場合は、[CHARACTER_ORIENTATION, HORIZONTAL] を使用してください。
    • 可能な限り垂直のカプセルを使用してください。水平のカプセルは垂直のカプセルよりも簡単に動かなくなることがあります。
  • プリムからスクリプトを削除しても、パス動作は停止しません。ただし、キャラクターがエラー状態に遭遇すると、エラー処理を取得する元のスクリプトがないため、回復できません。アクティブに使用されているキャラクターからスクリプトを削除することはお勧めしません。 パスコ*マンドを停止するには、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の関連した項目が参考になるかもしれません。