Player
Readonly
Beta
cameraカメラワークを制御するためのハンドルを取得します。
Readonly
isプレイヤーがAndroid環境で入室しているかどうかを取得します。
Quest環境での入室の場合はtrueを返します。
Readonly
isプレイヤーがデスクトップ環境で入室しているかどうかを取得します。
VR環境やモバイル環境での入室の場合はfalseを返します。
Readonly
isプレイヤーがiOS環境で入室しているかどうかを取得します。
Readonly
isプレイヤーがmacOS環境で入室しているかどうかを取得します。
Readonly
isプレイヤーがモバイル環境で入室しているかどうかを取得します。
VR環境やデスクトップ環境での入室の場合はfalseを返します。
Readonly
isプレイヤーがVRデバイスを使用して入室しているかどうかを取得します。
Readonly
isプレイヤーがWindows環境で入室しているかどうかを取得します。
Readonly
Beta
playerプレイヤーのPlayerIdです。
Readonly
sourceClusterScript.setPlayerScriptを呼び出したPlayer Scriptコンポーネントを持っている元のItemのItemIdです。
PlayerScriptからデータを送信するときのデータサイズを計算して、byte数を返します。 sendに対応していないデータの場合はTypeErrorが発生します。
アバターの移動やモーションに関する状態を、ビットマスクされたフラグの一覧として取得します。 定義されているビットフラグは以下の通りです。
0x0001
: アバターが接地している場合はオン、ジャンプや落下によって空中にいる場合はオフ0x0002
: アバターがよじのぼり動作を行っていればオン、そうでなければオフ0x0004
: アバターが乗り物に乗っていればオン、そうでなければオフフラグは今後のアップデートでも追加される可能性があるため、ビットフラグをマスクした値を使用してください。
// ビットフラグを取得してログ出力する関数の例
function getStatus() {
let flags = _.getAvatarMovementFlags();
let isGrounded = (flags & 0x0001) !== 0;
let isClimbing = (flags & 0x0002) !== 0;
let isRiding = (flags & 0x0004) !== 0;
_.log(`isGrounded: ${isGrounded}, isClimbing: ${isClimbing}, isRiding: ${isRiding}`);
}
アバターの移動状態に関するステータス
プレイヤーのヒューマノイドボーンの位置を取得します。
値はグローバル座標です。
アバターのロードが完了していない場合や、アバターにボーンが存在しない場合はnull
が返されます。
位置を取得するボーン
プレイヤーのヒューマノイドボーンの回転を取得します。
値はグローバル座標です。
アバターのロードが完了していない場合や、アバターにボーンが存在しない場合はnull
が返されます。
回転を取得するボーン
Beta
IDFCを取得します。
IDFCはクリエイターがユーザーを一意に認識するために利用できる文字列です。
この文字列は32文字で、使われる文字は 0123456789abcdef
です。
この文字列はPlayerScriptの元となるアイテムをアップロードしたアカウントとユーザーのアカウントとの組によって決定されます。
元となるアイテムとは、 $.setPlayerScript()
を呼び出したアイテムのことで、 _.sourceItemId
で取得できるアイテムとなります。
ユーザーの使用するデバイスやスペースによっては変化しません。
退室したプレイヤーに対してや、無効なPlayerIdに対してはnullを返します。
この文字列はコンテンツ体験を向上する目的で利用できます。当社が不適切と判断した場合、予告なく利用を制限させていただく場合もあります。
取得するプレイヤーのPlayerId
プレイヤーのPlayerStorageに保存されたデータを取得します。
クラフトアイテムで実行した場合はエラーになります。
PlayerStorageの詳細はsetPlayerStorageDataを参照してください。
// プレイヤーのゲーム開始時に保存されたレベルを取得するコードの例
let level;
const storageData = _.getPlayerStorageData();
if (storageData === null) {
level = 1;
} else {
level = storageData.level;
}
PlayerStorageに現在保存されているデータ
プレイヤーの現在の位置をグローバル座標で取得します。
値の取得に失敗した場合、nullを返します。
プレイヤーの移動状況をより詳細に取得するには、この関数に加えて PlayerScript.getAvatarMovementFlags を利用します。
プレイヤーの現在の位置
プレイヤーの現在の方向をグローバル座標で取得します。
値の取得に失敗した場合、nullを返します。
プレイヤーの移動状況をより詳細に取得するには、この関数に加えて PlayerScript.getAvatarMovementFlags を利用します。
プレイヤーの現在の方向
Beta
PlayerScript.showButtonで表示したボタン等を非表示にします。 すでに非表示のボタンに対して呼び出した場合は何も起こりません。
デスクトップ環境とモバイル環境では、index = 0
に対して呼び出した場合は「使う」ボタンの挙動が元に戻り、
UseItemTrigger や ClusterScript.onUse が設定されたアイテムを掴んでいるかどうかに基づいて、「使う」ボタンの表示/非表示が切り替わります。
ボタンの番号で、0,1,2,3のいずれか。この範囲外の値を指定するとエラーになります
アイテムのHumanoidAnimationListに含まれる、humanoidAnimationId
に指定したidのアニメーションを参照するHumanoidAnimationオブジェクトを返します。
HumanoidAnimationListの詳細はドキュメントを参照してください。
Beta
アイテムのIcon Asset Listコンポーネントで定義された、iconId
に指定したidに該当するアイコン画像オブジェクトを返します。
詳細はIcon Asset Listを参照してください。
このアイコンは PlayerScript.showButton で表示するために使用できます。
アイコン画像のid
Beta
PlayerScript.showButtonで表示したボタンの操作時に呼ばれるコールバック関数を登録します。
コールバックはボタンを押し下げると isDown = true
で呼び出され、その後にボタンを離すと isDown = false
で呼び出されます。
この関数はボタンの表示状態と関係なく登録でき、ボタンを非表示にしても登録状態は保持されます。
複数回呼ばれた場合、ボタン番号ごとに最後の登録のみが有効です。
このコールバックはisDown = true
で呼ばれたあと、必ずしもisDown = false
で呼ばれるとは限りません。
例えば、ボタンを押し下げたあとでhideButton
を呼び出してボタンを非表示にした場合、isDown = false
でのコールバックは呼ばれません。
ボタンの番号で、0,1,2,3のいずれか。この範囲外の値を指定するとエラーになります
ボタンの操作時に呼ばれるcallback関数
毎フレーム呼ばれるcallbackを登録します。 このコールバックは毎フレーム呼ばれることが保証されています。
複数回呼ばれた場合、最後の登録のみが有効です。
// 10秒間隔でログを出力する。
let t = 0;
_.onFrame(deltaTime => {
t += deltaTime;
if (t > 10) {
_.log("10 sec elapsed.");
t -= 10;
}
});
PlayerHandle.send、またはPlayerScript.sendToでPlayerId宛てに送られたメッセージを受け取ったときに呼ばれるcallbackを登録します。
複数回呼ばれた場合、最後の登録のみが有効です。
optionで受け取るメッセージの種類を指定できます。
optionが未設定の場合、 PlayerHandle.sendからのメッセージとPlayerScript.sendToでPlayerId宛てに送られたメッセージの両方を受け取ります。
option.item
が true
の場合、PlayerHandle.send から送信されたメッセージを受け取ります。option.item
が false
の場合、PlayerHandle.send から送信されたメッセージを無視します。option.item
が未設定の場合、PlayerHandle.send から送信されたメッセージを受け取ります。option.player
が true
の場合、PlayerScript.sendTo から送信されたメッセージを受け取ります。option.player
が false
の場合、PlayerScript.sendTo から送信されたメッセージを無視します。option.player
が未設定の場合、PlayerScript.sendTo から送信されたメッセージを受け取ります。// 送られたメッセージをログを出力する。
_.onReceive((messageType, arg, sender) => {
_.log(`Received message: ${messageType}, ${arg}`);
});
// 送られたメッセージをログを出力する。アイテムからのメッセージのみを受け取る。
_.onReceive((messageType, arg, sender) => {
_.log(`Received message: ${messageType}, ${arg}`);
}, { player: false, item: true });
senderは送信元のアイテムまたはプレイヤーを表します。
Optional
option: { item: boolean; player: boolean }コールバックの登録のオプションです。受け取るメッセージの種類を指定できます。
アイテムのPlayer Local Object Reference Listコンポーネントで定義された、id
に指定したidに該当するオブジェクトを返します。
詳細はPlayer Local Object Reference Listを参照してください。
定義されていないid
を指定した場合や、オブジェクトは存在するもののコンポーネントで指定された条件にマッチしない場合にはnull
を返します。
オブジェクトのid
Beta
レイが最初に衝突した物体を取得します。
衝突した物体 (衝突しなかった場合はnull)
Beta
レイが衝突した全ての物体を取得します。
大量のコライダーが範囲に含まれる場合に、条件を満たしたすべてのItemHandleを取得できない場合があります。 この場合、コンソールに警告メッセージが出力されます。
衝突した物体の配列 (順序は未定義)
Beta
プレイヤーに設定された移動速度、ジャンプ速度、重力をリセットします。 PlayerHandleで指定された移動速度、ジャンプ速度、重力もリセットされます。
アイテム・プレイヤーにメッセージを送ります。
送られた対象はClusterScript.onReceiveやPlayerScript.onReceiveに設定したコールバックを呼ぶことが期待されます。
メッセージのペイロード(arg
引数)に使用できるデータについてはPlayerScriptSendableを参照してください。
削除されたアイテムに対してや、無効なItemIdに対しては無視されます。 退室したプレイヤーに対してや、無効なPlayerIdに対しては無視されます。
ItemIdに対して送信した場合、PlayerScriptSendableはSendableに変換されます。
sendToを呼び出すことができる頻度には制限があります。
瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
このAPIを含む、他のアイテム・プレイヤーの状態を変更するAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。
ワールドアイテムからの実行である場合、sendToが動作するためには、流量制御による遅延が30秒以下である必要があります。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
エンコードされたarg
のデータサイズは1000byte以下である必要があります。
データサイズが制限を超えている場合、警告が表示されます。
データサイズはcomputeSendableSizeで計算できます。
データサイズが制限を大きく超えている場合、ClusterScriptError (requestSizeLimitExceeded
) が発生しsendTo
は失敗します。
Beta
プレイヤーにかかる重力加速度(単位:m/s^2)を変更します。初期値は-9.81です。
PlayerHandle.setGravityと設定を共有します。 あとから呼び出した方の値で上書きされます。
重力加速度
プレイヤーのアバターモデルの特定ボーンの回転を、指定した値にします。 回転はグローバル回転で指定します。 この関数で適用したボーンの回転はそのフレームでのみ適用され、次フレーム以降には影響しません。
アバターに存在しないボーンを指定してこの関数を呼び出した場合は、何も起こりません。
この関数で指定したボーンの回転は、PlayerHandle.setHumanoidPose よりも優先されます。 VRではプレイヤーが掴んでいるアイテムは指定されたポーズに追従しますが、1人称のカメラやUI操作などは影響を受けません。
回転を指定するボーン
ボーンに対して設定するグローバル回転
プレイヤーのアバターモデルの姿勢を、指定したHumanoidPoseで上書きします。 この関数で適用した姿勢はそのフレームのみで適用され、次フレーム以降には影響しません。
HumanoidPoseのrootPosition, rootRotation, muscleのうち、指定されていない要素については上書きされません。
weightは指定した姿勢の適用率を0以上1以下で表し、1を指定すると姿勢が完全に適用されます。 weightは省略でき、省略した場合は1が指定されたものとして扱われます。
この関数で指定した姿勢は PlayerHandle.setHumanoidPose よりも優先されます。 VRではプレイヤーが掴んでいるアイテムは指定されたポーズに追従しますが、1人称のカメラやUI操作などは影響を受けません。
このフレームで適用する姿勢
姿勢の適用率
Beta
プレイヤーのジャンプ速度の倍率を変更します。初期値は1です。
PlayerHandle.setJumpSpeedRateと設定を共有します。 あとから呼び出した方の値で上書きされます。
ジャンプ速度の倍率
Beta
プレイヤーの移動速度の倍率を変更します。初期値は1です。
PlayerHandle.setMoveSpeedRateと設定を共有します。 あとから呼び出した方の値で上書きされます。
移動速度の倍率
プレイヤーのPlayerStorageにデータを上書き保存します。
保存できるデータ(data
引数)についてはPlayerScriptSendableを参照してください。
クラフトアイテムで実行した場合はエラーになります。
PlayerStorageは、各ワールドやイベントでプレイヤーごとに存在する、データを保存するための領域です。
一度もsetPlayerStorageDataが呼ばれていないPlayerStorageにはnull
が保存されています。
ワールドでは、プレイヤーがワールドを離れてもPlayerStorageのデータは保持されます。 プレイヤーが再びそのワールドに戻ると、以前のデータを参照できます。 PlayerStorageにはPlayerId, ItemIdを保存することもできますが、これらはスペースをまたいで有効なプレイヤーやアイテムを指し示すとは限りません。
イベントでは、プレイヤーがイベントに入場するたびに、PlayerStorageは初期化され、null
がセットされます。
また、イベントでPlayerStorageのデータが上書きされても、イベント開催会場となった元のワールドのPlayerStorageのデータは変更されません。
PlayerStorageのデータはワールド管理画面から消去することができます。 詳しくはこちらを参照してください。
エンコードされたdata
のデータサイズは10,000byte以下である必要があります。
データサイズはcomputeSendableSizeで計算できます。
データサイズが制限を超えている場合、ClusterScriptError (requestSizeLimitExceeded
) が発生しsetPlayerStorageDataは失敗します。
// レベルアップのメッセージを受け取るとレベルアップし、その結果を保存するコードの例
let level = 1;
_.onReceive((messageType, arg, sender) => {
if (messageType === "levelUp") {
level += 1;
_.setPlayerStorageData({ level });
}
});
Beta
プレイヤーにポストプロセスエフェクトを設定します。
このメソッドを呼び出すたびに、以前設定されていたPostProcessEffectsは新しいPostProcessEffectsで上書きされます。
nullを設定するとすべてのエフェクトがクリアされます。
PlayerHandle.setPostProcessEffectsと設定を共有します。 あとから呼び出した方の値で上書きされます。
// 押すととてもまぶしくなるボタン
_.onButton(0, (isDown) => {
if (!isDown) return;
const effects = new PostProcessEffects();
effects.bloom.active = true;
effects.bloom.threshold.setValue(0.5);
effects.bloom.intensity.setValue(10.0);
_.setPostProcessEffects(effects);
});
PostProcessEffectsのインスタンス。
プレイヤーの方向をグローバル座標で設定します。
この関数ではy軸回転のみが適用され、プレイヤーの向きは鉛直のままになります。
レイヤーの方向
Beta
指定した整数値に対応したボタンUIを表示するか、あるいはボタンと同等に扱われるキー/マウスクリック入力等の監視を開始します。 表示済みのボタンに対して呼び出した場合、必要に応じてアイコンが更新されます。 この方法で最大4つのボタン入力を提示できます。
この関数でボタンを表示するには、ワールドのWorldRuntimeSetting コンポーネントで Use Cluster HUD v2
オプションが有効になっている必要があります。
表示したボタンのコールバックは PlayerScript.onButton で登録します。
デスクトップ環境とモバイル環境では、index = 0
に対応するボタンは、UseItemTrigger が設定されたアイテムの「使う」ボタンと共通のボタンです。
それ以外のボタンは、この関数を呼び出すことでのみ表示されます。
index = 0
でこの関数を呼び出した場合、 PlayerScript.hideButton をindex = 0
で呼び出すまでの間、
アイテムの「使う」ボタンよりも、この関数で設定したボタンの表示内容と PlayerScript.onButton で登録したコールバックが優先されます。
ボタンを押しても UseItemTrigger は発火せず、 ClusterScript.onUse も呼ばれなくなります。
この関数で表示したボタンは PlayerScript.hideButton を呼び出すか、あるいはPlayer Scriptの有効期間が終了することで非表示になります。
モバイル環境では、ボタンは番号に応じて特定の位置に配置されます。 デスクトップ環境では、ボタン0,1,2,3に対してそれぞれ以下のキーアサインが適用されます。
VR環境では、ボタンを1つ以上有効にしている間に右手コントローラーのトリガーを引くことでパイメニューが表示され、スティックを倒すことでボタン入力が行えます。 パイメニューのボタンは、右から反時計回りに0,1,2,3に対応します。
デスクトップ環境では、ボタンを1つ以上表示している間は画面上でカーソル操作がロックされ、カーソルロック中のクリックやキー入力がボタン入力として扱われます。 ボタンの表示や非表示を著しく高頻度で繰り返した場合、この自動でのカーソルロックは一定時間無効になります。
ボタンの番号で、0,1,2,3のいずれか。この範囲外の値を指定するとエラーになります
表示するアイコン画像。無効なアイコンを指定した場合、アイコンが未指定なものとして扱われます。
アイテムのWorldItemReferenceListに含まれる、worldItemReferenceId
が指定されたアイテムを参照するItemIdオブジェクトを返します。
WorldItemReferenceListの詳細はドキュメントを参照してください。
// ボタン0を使用すると指定したアイテムに "button" というメッセージを送信するアイテム
const target = _.worldItemReference("target");
_.onButton(0, isDown => {
if (isDown) _.sendTo(target, "button", null);
});
Generated using TypeDoc
PlayerScriptを操作するハンドルです。
_
オブジェクトからアクセスできます。PlayerScriptはClusterScript.setPlayerScriptで設定することで生成されます。