ユーザ用ツール

サイト用ツール


vci:script:reference:eventfunction:tips1

イベント関数呼び出しの条件とタイミングについて


Update

update()

  • VCIの所有者
  • 毎フレーム

備考

  • VCIの所有者と、SubItemの所有者は別です
  • [公開スタジオのみ]VCIの所有者は、最初の入室者になります
  • [公開スタジオのみ]VCIの所有者が退室したときに、他のユーザーに移ります(入室順)

updateAll()

  • 全ユーザー
  • フレーム

Trigger/Collision と Enter/Exit

onTriggerEnter(item, hit)

  • SubItemの所有者
  • Triggerが接触したとき

備考

  • 所有権の無いSubItemのRigidbodyは Kinematic=true になります
  • ColiderのisTriggerがtrue (subitem自身にはrigidbody必要なし)

onTriggerExit(item, hit)

  • SubItemの所有者
  • Triggerが離れたとき

備考

  • 所有権の無いSubItemのRigidbodyは Kinematic=true になります
  • ColiderのisTriggerがtrue (subitem自身にはrigidbody必要なし)

onCollisionEnter(item, hit)

  • SubItemの所有者
  • Collisionが接触したとき

備考

  • 所有権の無いSubItemのRigidbodyは Kinematic=true になります
  • ColiderのisTriggerがfalse + SubItemにrigidbody必要

onCollisionExit(item, hit)

  • SubItemの所有者
  • Collisionが離れたとき

備考

  • 所有権の無いSubItemのRigidbodyは Kinematic=true になります
  • ColiderのisTriggerがfalse + SubItemにrigidbody必要

Grab と Use

  • バーチャルキャストでは、掴むことをきっかけにして所有権を移動させています

そのため、以下の状態がありえます。

  • 掴んでいる
  • 所有してない(他のユーザーが所有するアイテムを掴んだ。所有権を要求中)
  • 掴むイベントが不発
  • 掴んでいる
  • 所有してない(掴んでいるアイテムを、他のユーザーが掴んで所有権が移動した)
  • このあと離したときに起こるであろう、離したイベントが不発になる

これに対策するために Grab と Use のイベントの判定を下記のようにしています。

onGrab(target)

  • SubItemの所有者
  • 掴む前から所有権がある場合
    • 掴んだとき
  • 掴んだ後で所有権を得た
    • 所有権を得たとき

備考

  • 掴んでから少し遅れて発動する場合があります

onUngrab(target)

  • 離したとき
  • もしくは、所有権を失ったとき(スクリプト実行時は所有権がありません)

備考

  • 所有権を失ったときに、掴んでいても発動する場合があります

onUse(use)

  • SubItemの所有者
  • Useボタンを押したとき

onUnuse(use)

  • 使うボタンを離したとき
  • もしくは、所有権を失ったとき(スクリプト実行時は所有権がありません)

備考

  • ボタンを押していても、所有権を失ったときにも発動する場合があります
vci/script/reference/eventfunction/tips1.txt · 最終更新: 2019/05/28 15:00 by navana

ページ用ツール