この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
vci:script:reference:eventfunction:tips1 [2021/06/17 19:11] t-daihisa |
vci:script:reference:eventfunction:tips1 [2023/03/15 13:47] (現在) santarh |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== イベント関数呼び出しの条件とタイミングについて ====== | ====== イベント関数呼び出しの条件とタイミングについて ====== | ||
- | ===== Update ===== | + | **このページはメンテナンスされていません。** |
- | ==== update() ==== | + | |
- | * VCIの所有者 | + | **[[vci/script/reference/eventfunction|こちら]]をご覧ください。** |
- | * 毎フレーム | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * VCIの所有者と、SubItemの所有者は別です | + | |
- | * [公開スタジオのみ]VCIの所有者は、最初の入室者になります | + | |
- | * [公開スタジオのみ]VCIの所有者が退室したときに、他のユーザーに移ります(入室順) | + | |
- | + | ||
- | ==== updateAll() ==== | + | |
- | + | ||
- | * 全ユーザー | + | |
- | * フレーム | + | |
- | + | ||
- | ===== Trigger/Collision と Enter/Exit ===== | + | |
- | ==== onTriggerEnter(item, hit) ==== | + | |
- | + | ||
- | * SubItemの所有者 | + | |
- | * Triggerが接触したとき | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * 所有権の無いSubItemのRigidbodyは Kinematic=true になります | + | |
- | * Kinematicのtrue/falseによるTriggerイベントの有無については下記のCollisionアクションマトリックスを参照してください | + | |
- | * https://docs.unity3d.com/ja/current/Manual/CollidersOverview.html | + | |
- | * ColiderのisTriggerがtrue (subitem自身にはrigidbody必要なし) | + | |
- | + | ||
- | ==== onTriggerExit(item, hit) ==== | + | |
- | + | ||
- | * SubItemの所有者 | + | |
- | * Triggerが離れたとき | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * 所有権の無いSubItemのRigidbodyは Kinematic=true になります | + | |
- | * Kinematicのtrue/falseによるTriggerイベントの有無については下記のCollisionアクションマトリックスを参照してください | + | |
- | * https://docs.unity3d.com/ja/current/Manual/CollidersOverview.html | + | |
- | * ColiderのisTriggerがtrue (subitem自身にはrigidbody必要なし) | + | |
- | + | ||
- | ==== onCollisionEnter(item, hit) ==== | + | |
- | + | ||
- | * SubItemの所有者 | + | |
- | * Collisionが接触したとき | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * 所有権の無いSubItemのRigidbodyは Kinematic=true になります | + | |
- | * Kinematicのtrue/falseによるTriggerイベントの有無については下記のCollisionアクションマトリックスを参照してください | + | |
- | * https://docs.unity3d.com/ja/current/Manual/CollidersOverview.html | + | |
- | * ColiderのisTriggerがfalse + SubItemにrigidbody必要 | + | |
- | + | ||
- | ==== onCollisionExit(item, hit) ==== | + | |
- | + | ||
- | * SubItemの所有者 | + | |
- | * Collisionが離れたとき | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * 所有権の無いSubItemのRigidbodyは Kinematic=true になります | + | |
- | * Kinematicのtrue/falseによるTriggerイベントの有無については下記のCollisionアクションマトリックスを参照してください | + | |
- | * https://docs.unity3d.com/ja/current/Manual/CollidersOverview.html | + | |
- | * ColiderのisTriggerがfalse + SubItemにrigidbody必要 | + | |
- | + | ||
- | ===== Grab と Use ===== | + | |
- | + | ||
- | * バーチャルキャストでは、掴むことをきっかけにして所有権を移動させています | + | |
- | + | ||
- | そのため、以下の状態がありえます。 | + | |
- | + | ||
- | * 掴んでいる | + | |
- | * 所有してない(他のユーザーが所有するアイテムを掴んだ。所有権を要求中) | + | |
- | * 掴むイベントが不発 | + | |
- | + | ||
- | * 掴んでいる | + | |
- | * 所有してない(掴んでいるアイテムを、他のユーザーが掴んで所有権が移動した) | + | |
- | * このあと離したときに起こるであろう、離したイベントが不発になる | + | |
- | + | ||
- | これに対策するために Grab と Use のイベントの判定を下記のようにしています。 | + | |
- | + | ||
- | ==== onGrab(target) ==== | + | |
- | + | ||
- | * SubItemの所有者 | + | |
- | * 掴む前から所有権がある場合 | + | |
- | * 掴んだとき | + | |
- | * 掴んだ後で所有権を得た | + | |
- | * 所有権を得たとき | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * 掴んでから少し遅れて発動する場合があります | + | |
- | + | ||
- | ==== onUngrab(target) ==== | + | |
- | + | ||
- | * 離したとき | + | |
- | * もしくは、所有権を失ったとき(スクリプト実行時は所有権がありません) | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * 所有権を失ったときに、掴んでいても発動する場合があります | + | |
- | + | ||
- | ==== onUse(use) ==== | + | |
- | + | ||
- | * SubItemの所有者 | + | |
- | * Useボタンを押したとき | + | |
- | + | ||
- | ==== onUnuse(use) ==== | + | |
- | + | ||
- | * 使うボタンを離したとき | + | |
- | * もしくは、所有権を失ったとき(スクリプト実行時は所有権がありません) | + | |
- | + | ||
- | 備考 | + | |
- | + | ||
- | * ボタンを押していても、所有権を失ったときにも発動する場合があります | + | |