アバタースクリプト
アバタースクリプトはアバターにバインドされます。つまり、ユーザーが特定のアバターを身につけたときに実行されます。同様に、アバタースクリプトはアバターが削除されたり変更されたりすると、実行を停止します。ドメイン内の他のユーザーは、スクリプトの動作を見ることができますが、自分でスクリプトを実行することはできません。
アバタースクリプトを使えば、髪をなびかせたり、アバターの周りにパーティクルクラウドを発生させたりすることができます。
コンテンツ
アバタースクリプトを追加する
FSTファイルにアバタースクリプトを追加するには、パッケージモデルツールを使用する方法と、手動でスクリプトを追加する方法の2種類があります。
パッケージモデルツールを使用してアバタースクリプトを追加するには:
FBX、GLB、またはglTFファイルと同じ場所に
scripts
というフォルダを作成します。アバタースクリプトをこの新しいフォルダーにコピーします。
インターフェイスにおいて、**[編集]>[パッケージモデル]**に移動します
[スクリプトディレクトリ]には、上記で作成した
scripts
フォルダへのパスを入力します。
アバタースクリプトを手動で追加するには:
選択したテキストエディタでアバターのFSTファイルを開きます。
構文
script = [SCRIPT URL]
を使用して、アバターにスクリプトファイルの場所を示す行を追加します。
複数のscript = url
行を追加することで、アバターに複数のスクリプトを追加できます。
アバタースクリプトの例
次のスクリプトは、右手が動いたときにアバターにボールを投げさせます。
(function(){
var triggerDistance = 0.0;
var TRIGGER_THRESHOLD = 0.9;
var LOAD_THRESHOLD = 0.6
var init = false;
var rightHandIndex = MyAvatar.getJointIndex("RightHand");
var rightArmIndex = MyAvatar.getJointIndex("RightArm");
var distance = 0.0;
var triggered = false;
function fireBall(position, speed) {
var baseID = Entities.addEntity({
type: "Sphere",
color: { blue: 128, green: 128, red: 20 },
dimensions: { x: 0.1, y: 0.1, z: 0.1 },
position: position,
dynamic: true,
collisionless: false,
lifetime: 10,
gravity: speed,
userData: "{ \"grabbableKey\": { \"grabbable\": true, \"kinematic\": false } }"
});
Entities.editEntity(baseID, { velocity: speed });
}
Script.update.connect(function() {
rightHandPos = MyAvatar.getJointPosition(rightHandIndex);
rightArmPos = MyAvatar.getJointPosition(rightArmIndex);
fireDir = Vec3.subtract(rightHandPos, rightArmPos);
var distance = Vec3.length(fireDir);
triggerDistance = distance > triggerDistance ? distance : triggerDistance;
if (!triggered) {
if (distance < LOAD_THRESHOLD * triggerDistance) {
triggered = true;
}
} else if (distance > TRIGGER_THRESHOLD * triggerDistance) {
triggered = false;
fireBall(rightHandPos, Vec3.normalize(fireDir));
}
});
MyAvatar.scaleChanged.connect(function () {
triggerDistance = 0.0;
});
}());
このサンプルスクリプトは、MyAvatar名前空間を使用して、アバターの手が動くかどうかを判断します。動きを検出すると、スクリプトはアバターにボールを発射させます。また、Entities(起動するボールを作成するため)やVec3などの他の名前も使用します。Vec3 (適切な位置と距離を決定するため)。それをアバターに追加して、どのように機能するかを確認してください。
関連項目