vci:script:reference:eventfunction

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
vci:script:reference:eventfunction [2021/06/24 17:35]
t-daihisa
vci:script:reference:eventfunction [2024/01/14 12:00] (現在)
Ramen [イベント関数一覧]
ライン 1: ライン 1:
 +~~NOTOC~~
 ====== VCIイベント関数 ====== ====== VCIイベント関数 ======
 +
 +<WRAP center round important 80%>
 +
 +このページは過去の情報となります。\\
 +新しいスクリプトリファレンスは**[[https://​developer.virtualcast.jp/​vci-docs/​api/​events/​index.html|こちら]]**になります。
 +</​WRAP>​
  
 イベント関数とは、条件を満たした時に実行される関数です。 イベント関数とは、条件を満たした時に実行される関数です。
  
-例えば「VCIに触った時に音を鳴らす」「VCIをんだ時にアニメーションをさせる」といったような挙動は、イベント関数を通じてそれぞれの処理が実行されます。+例えば「VCIに触った時に音を鳴らす」「VCIをつかんだ時にアニメーションをさせる」といったような挙動は、イベント関数を通じてそれぞれの処理が実行されます。
  
 イベント関数はシステムによって関数名と関数の挙動が定義されています。 イベント関数はシステムによって関数名と関数の挙動が定義されています。
ライン 10: ライン 17:
 ===== イベント関数一覧 ===== ===== イベント関数一覧 =====
  
-^ イベント関数 ^ 説明 ^ +下表において、VCI上のSubItemのことも便宜上VCIと表現しています。 
-| [[vci/​script/​reference/​eventfunction#​update ​| update()]] | **VCIを出したユーザーのクライアントのみ**で毎フレーム実行されます ​+ 
-| [[vci/​script/​reference/​eventfunction#updateall | updateAll()]] | 所有権に関係なく全ユーザーで実行されるupdate()です ​+^ イベント関数 ^ 説明 ​^ 条件 ​
-| [[vci/​script/​reference/​eventfunction#onuse | onUse(use)]] | VCIをている状態でコントローラーをグリップし場合に実行されます。 ​+| [[#update]] | 毎フレーム実行 |VCIを出したユーザーのみ| 
-| [[vci/​script/​reference/​eventfunction#onunuse | onUnuse(use)]] | VCIを持っている状態でコントローラーグリップして離し場合に実行されます。 ​+| [[#​updateAll]] | 全ユーザーで毎フレーム実行 ​
-| [[vci/​script/​reference/​eventfunction#ontriggerenter | onTriggerEnter(item, hit)]] | VCIと[[vci:​component:​unitycomponent:​collider| Collider]]が接触した時に実行されます。\\ [[vci:​component:​unitycomponent:​collider| Collider]]のIsTriggerにチェックされていれば有効) +| [[#onUse]] | VCIを**使った**時に実行 ​|所有権を持っている
-| [[vci/​script/​reference/​eventfunction#ontriggerexit | onTriggerExit(item, hit)]] | VCIと[[vci:​component:​unitycomponent:​collider| Collider]]が接触した状態から離れた時に実行されます。\\ ([[vci:component:unitycomponent:collider| Collider]]のIsTriggerにチェックされていれば有効) ​+| [[#​onUnuse]] | VCIを**使うのやめ**時に実行 ​|:::
-| [[vci/​script/​reference/​eventfunction#oncollisionenter | onCollisionEnter(item, hit)]] | VCIと[[vci:​component:​unitycomponent:​collider| Collider]](+[[vci:​component:​unitycomponent:​rigidbody|Rigidbody]])が接触した時に実行されます。 ​+| [[#​onTriggerEnter]] | VCIと[[vci:​component:​unity_collider|Collider]]が**接触した**時に実行 ​ ​|所有権を持っている ​\\ [[vci:​component:​unity_collider|Collider]]の**IsTrigger有効**
-| [[vci/​script/​reference/​eventfunction#oncollisionexit | onCollisionExit(item, hit)]] | VCIと[[vci:​component:​unitycomponent:​collider| Collider]](+[[vci:​component:​unitycomponent:​rigidbody|Rigidbody]])接触した状態から離れた時に実行されます。 ​+| [[#​onTriggerExit]] | VCIと[[vci:​component:​unity_collider|Collider]]が**離れた**時に実行 ​ |:::| 
-| [[vci/​script/​reference/​eventfunction#ongrab | onGrab(target)]] | VCIをんだ時(トリガーボタンを押す)に実行されます。 ​+| [[#​onCollisionEnter]] | VCIと[[vci:​component:​unity_collider|Collider]]が**接触した**時に実行 ​|所有権を持っている \\ [[vci:​component:​unity_collider|Collider]]の**IsTrigger:無効** ​
-| [[vci/​script/​reference/​eventfunction#onungrab | onUngrab(target)]] | VCIを離した時(トリガーボタンを離す)に実行されます。 ​|+| [[#​onCollisionExit]] | VCIと[[vci:​component:​unity_collider|Collider]]が**離れた**時に実行 ​|:::
 +| [[#onGrab]] | VCIを**つかんだ**時に実行 ​
 +| [[#​onUngrab]] | VCIを**離した**時に実行 ​|
  
 ==== イベント関数の引数について ==== ==== イベント関数の引数について ====
  
 各イベント関数の引数には **Subitemのgameobject名** が **String型** で渡されます。\\ 各イベント関数の引数には **Subitemのgameobject名** が **String型** で渡されます。\\
-引数を使って ''​SubItem = vci.assets.GetSubItem(target)''​ 等を使う事により、んだり触ったりしたSubitemに対して、処理を行う事ができます。+引数を使って ''​SubItem = vci.assets.GetTransform(target)''​ 等を使う事により、つかんだり触ったりしたSubitemに対して、処理を行う事ができます。
  
-===== Start関数が無い =====+===== アイテムロード時のタイミングでの処理を書きたい =====
  
-Unity(C#)Start」や「Awake」相当するイベント関数はVCIスクリプトには実装されていません。\\ +Unityの ​''​Start''​ のような、アイテムロード時最初に一度だけ実行されるイベント関数はありません。\\ 
-しかし、**関数の外に記述した部分VCIを出した時の1度しか実行されない**ので、関数に処理を書くことで実質的にStart関数のように扱う事が可能です。\\+しかし ​Lua スクリプト言語ですので、 ​''​main.lua'' ​グローバルな場所に処理を記述すれば、そのタイミングで実きます。
  
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
--- ここがstart関数のように機能します +function func1() 
-print("​VCIを出した時のみ実行"​) +    print("​誰からも呼び出されていないでこれは実行されない")
- +
-function myFunction() +
-     --VCI呼び出し時に実行されず、他関数から呼び出す必要があります +
-     ​print("​onUse()から実行され")+
 end end
  
-function ​onUse() +function ​func2() 
-     ​print("​Useボタンした自分で定義した myFunction() を呼び出す"+    print("​グローバルから呼び出されているので、アイテムロードしたとき一度だけ実行される")
-     ​myFunction()+
 end end
 +
 +print("​アイテムをロードしたときに一度だけ実行される"​)
 +func2()
 </​file>​ </​file>​
  
 ===== update ===== ===== update =====
 +**update()**
  
 **VCIを出したユーザーのクライアントのみ**で毎フレーム実行されます。\\ **VCIを出したユーザーのクライアントのみ**で毎フレーム実行されます。\\
-他のクライアントでは実行されないので、結果を同期させる際には注意する必要があります。\\ +他のクライアントでは実行されないので、結果を同期させる際には注意する必要があります。 
-\\+
 ただし、updateによる処理であってもオブジェクトのトランスフォームなどはバーチャルキャストの機能によって同期します。\\ ただし、updateによる処理であってもオブジェクトのトランスフォームなどはバーチャルキャストの機能によって同期します。\\
-詳しくは [[vci:​component:​sdk:​subitem:​owned|VCIアイテムとSubItemについて]] を参照してください。\\+詳しくは [[vci:​component:​sdk:​subitem:​owned|VCIアイテムとSubItemについて]] を参照してください。
  
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
 function update() function update()
ライン 61: ライン 71:
  
 ===== updateAll ===== ===== updateAll =====
 +**updateAll()**
  
 所有権に関係なく全ユーザーで毎フレーム実行されるupdate()です。\\ 所有権に関係なく全ユーザーで毎フレーム実行されるupdate()です。\\
-詳しくは [[vci:​component:​sdk:​subitem:​owned|VCIアイテムとSubItemについて]] を参照してください。\\+詳しくは [[vci:​component:​sdk:​subitem:​owned|VCIアイテムとSubItemについて]] を参照してください。
  
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
 function updateAll() function updateAll()
ライン 71: ライン 83:
  
 ===== onUse ===== ===== onUse =====
 +**onUse(use)**
  
-VCIを持っている状態でコントローラーグリップした場合に実行されます。\\ +[[vci:​script:​reference:​eventfunction:​ownership:#​SubItemの所有権とイベント関数の関係|SubItemの所有権を持っている状態]]SubItem使った場合に実行されます。
-下記サンプルはUseされたSubItemの名前がConsoleに表示されます。+
  
-※使用するにはめる事が前提のため、[[vci:​component:​unitycomponent:​collider| Collider]]と[[vci:​component:​sdk:​subitem| SubItem(VCISDK)]]の**Grabbable**が設定されていないと動作しません。+※使用するにはつかめる事が前提のため、[[vci:​component:​unity_collider| Collider]]と[[vci:​component:​sdk:​subitem| SubItem]]の**Grabbable**が設定されていないと動作しません。
  
 +=== サンプル ===
 +UseされたSubItemの名前がConsoleに表示されます。
 <file lua main.lua>​ <file lua main.lua>​
 function onUse(use) function onUse(use)
      ​print("​onUse : "​..use)      ​print("​onUse : "​..use)
-     ​print("​SubItemの "​..use.."​ がグリップ状態になりました。"​)+     ​print("​SubItemの "​..use.."​ が使っている状態になりました。"​)
 end end
 </​file>​ </​file>​
  
 ===== onUnuse ===== ===== onUnuse =====
 +**onUnuse(use)**
  
-VCIを持っている状態でコントローラーグリップして離した場合に実行されます。\\ +VCIを持っている状態でVCI使うのをやめた場合に実行されます。
-下記サンプルはUseされたSubItemの名前がConsoleに表示されます。+
  
-※使用するにはめる事が前提のため、[[vci:​component:​unitycomponent:​collider| Collider]]と[[vci:​component:​sdk:​subitem| SubItem(VCISDK)]]の**Grabbable**が設定されていないと動作しません。+※使用するにはつかめる事が前提のため、[[vci:​component:​unity_collider| Collider]]と[[vci:​component:​sdk:​subitem| SubItem]]の**Grabbable**が設定されていないと動作しません。
  
 +=== サンプル ===
 +UseされたSubItemの名前がConsoleに表示されます。
 <file lua main.lua>​ <file lua main.lua>​
 function onUnuse(use) function onUnuse(use)
      ​print("​Unuse : "​..use)      ​print("​Unuse : "​..use)
-     ​print("​SubItemの "​..use.."​ がグリップ状態から離れました。"​)+     ​print("​SubItemの "​..use.."​ が使っている状態から離れました。"​)
 end end
 </​file>​ </​file>​
  
 ===== onTriggerEnter ===== ===== onTriggerEnter =====
 +**onTriggerEnter(item,​ hit)**
  
 VCIとColliderが接触した時に実行されます。\\ VCIとColliderが接触した時に実行されます。\\
-onTriggerEnterはVCIのSubItemにアタッチされた[[vci:​component:​unitycomponent:​collider| Collider]]の**Is Trigger**が有効だと実行されます。\\ +onTriggerEnterはVCIのSubItemにアタッチされた[[vci:​component:​unity_collider| Collider]]の**Is Trigger**が有効だと実行されます。\\ 
-SubItemに物理挙動を持たせたくないが、接触しているかどうかの判定は行いたい時に使います。\\ +SubItemに物理挙動を持たせたくないが、接触しているかどうかの判定は行いたい時に使います。 
-\\ + 
-下記サンプルSubItem同士が接触するSubItemの名前のログが流れます。\\+キャラクターの各パーツにもCollider存在するため、キャラクターの接触判定を行うこも出来ます。 
  
 +=== サンプル ===
 +SubItem同士が接触するとSubItemの名前のログが流れます。
 <file lua main.lua>​ <file lua main.lua>​
 function onTriggerEnter(item,​ hit) function onTriggerEnter(item,​ hit)
ライン 114: ライン 134:
  
 ===== onTriggerExit ===== ===== onTriggerExit =====
 +**onTriggerExit(item,​ hit)**
  
 VCIとColliderが接触した状態から離れた時に実行されます。\\ VCIとColliderが接触した状態から離れた時に実行されます。\\
-onTriggerExitはVCIのSubItemにアタッチされた[[vci:​component:​unitycomponent:​collider| Collider]]の**Is Trigger**が有効だと実行されます。\\+onTriggerExitはVCIのSubItemにアタッチされた[[vci:​component:​unity_collider| Collider]]の**Is Trigger**が有効だと実行されます。\\
 SubItemに物理挙動を持たせたくないが、接触しているかどうかの判定は行いたい時に使います。 SubItemに物理挙動を持たせたくないが、接触しているかどうかの判定は行いたい時に使います。
  
-下記サンプルSubItem同士が接触るとSubItemの名前のログが流れます。\\ +=== サンプル ​=== 
 +SubItem同士が接触した状態から離れるとSubItemの名前のログが流れます。
 <file lua main.lua>​ <file lua main.lua>​
 function onTriggerExit(item,​ hit) function onTriggerExit(item,​ hit)
ライン 129: ライン 150:
  
 ===== onCollisionEnter ===== ===== onCollisionEnter =====
 +**onCollisionEnter(item,​ hit)**
  
 VCIとCollider(+Rigidbody)が接触した時に実行されます。\\ VCIとCollider(+Rigidbody)が接触した時に実行されます。\\
-onCollisionEnterはVCIのSubItemにアタッチされた[[vci:​component:​unitycomponent:​collider| Collider]]の**Is Trigger**が無効だと実行されます。\\+onCollisionEnterはVCIのSubItemにアタッチされた[[vci:​component:​unity_collider| Collider]]の**Is Trigger**が無効だと実行されます。\\
 SubItemに物理挙動を持たせた上で接触判定を行いたい時に使用します。 SubItemに物理挙動を持たせた上で接触判定を行いたい時に使用します。
  
-下記サンプルSubItem同士が接触するとSubItemの名前のログが流れます。+=== サンプル ​=== 
 +SubItem同士が接触するとSubItemの名前のログが流れます。
  
 <file lua main.lua>​ <file lua main.lua>​
ライン 144: ライン 167:
  
 ===== onCollisionExit ===== ===== onCollisionExit =====
 +**onCollisionExit(item,​ hit)**
  
 VCIとCollider(+Rigidbody)が接触した状態から離れた時に実行されます。\\ VCIとCollider(+Rigidbody)が接触した状態から離れた時に実行されます。\\
-onCollisionExitはVCIのSubItemにアタッチされた[[vci:​component:​unitycomponent:​collider| Collider]]の**Is Trigger**が無効だと実行されます。\\+onCollisionExitはVCIのSubItemにアタッチされた[[vci:​component:​unity_collider| Collider]]の**Is Trigger**が無効だと実行されます。\\
 SubItemに物理挙動を持たせた上で接触判定を行いたい時に使用します。 SubItemに物理挙動を持たせた上で接触判定を行いたい時に使用します。
  
-下記サンプルSubItem同士が接触した状態から離れるとSubItemの名前のログが流れます。 +=== サンプル ​=== 
 +SubItem同士が接触した状態から離れるとSubItemの名前のログが流れます。
 <file lua main.lua>​ <file lua main.lua>​
 function onCollisionExit(item,​ hit) function onCollisionExit(item,​ hit)
ライン 159: ライン 183:
  
 ===== onGrab ===== ===== onGrab =====
 +**onGrab(target)**
  
-onGrabはVCIをんだ時に実行されます。\\+onGrabはVCIをつかんだ時に実行されます。\\
 onGrab(target)の引数にはSubItemの名前が格納されます。 onGrab(target)の引数にはSubItemの名前が格納されます。
  
-下記サンプルは掴んだアイテムの現在地をConsoleに表示するサンプルです。 +=== サンプル ​=== 
 +つかんだアイテムの現在地をConsoleに表示するサンプルです。
 <file lua main.lua>​ <file lua main.lua>​
 function onGrab(target) function onGrab(target)
     print("​onGrab : "​..target)     print("​onGrab : "​..target)
-    local item = vci.assets.GetSubItem(target)+    local item = vci.assets.GetTransform(target)
     print(item.GetPosition())     print(item.GetPosition())
 end end
ライン 174: ライン 199:
  
 ===== onUngrab ===== ===== onUngrab =====
- +**onUngrab(target)**\\ 
-onUngrabはVCIをんでる状態から離した時に実行されます。\\+onUngrabはVCIをつかんでる状態から離した時に実行されます。\\
 onGrab(target)の引数にはSubItemの名前が格納されます。 onGrab(target)の引数にはSubItemの名前が格納されます。
  
 +=== サンプル ===
 下記サンプルはSubItemを離した時に、(0,​0,​0)の位置に移動させるサンプルです。\\ 下記サンプルはSubItemを離した時に、(0,​0,​0)の位置に移動させるサンプルです。\\
 アイテムを移動させた場合は''​SetVelocity(Vector3.zero)''​でアイテムに加わってる力を0にすると挙動が安定します。 アイテムを移動させた場合は''​SetVelocity(Vector3.zero)''​でアイテムに加わってる力を0にすると挙動が安定します。
ライン 184: ライン 210:
 function onUngrab(target) function onUngrab(target)
     print("​onUngrab : "​..target)     print("​onUngrab : "​..target)
-    local item = vci.assets.GetSubItem(target)+    local item = vci.assets.GetTransform(target)
     item.SetLocalPosition(Vector3.zero)     item.SetLocalPosition(Vector3.zero)
     item.SetVelocity(Vector3.zero)     item.SetVelocity(Vector3.zero)
ライン 201: ライン 227:
 ==== 処理の例 ==== ==== 処理の例 ====
  
-**2人で同じVCIをんだ場合**+**2人で同じVCIをつかんだ場合**
  
-1.VCIを先にんでる人が居る。\\+1.VCIを先につかんでる人が居る。\\
  → 先:Grab + 所有権有り → onGrab()実行済み\\  → 先:Grab + 所有権有り → onGrab()実行済み\\
-2.後から別の人が同じVCIをむ。\\+2.後から別の人が同じVCIをつかむ。\\
  → 先:Grab + 所有権無し → onUngrab()が実行される\\  → 先:Grab + 所有権無し → onUngrab()が実行される\\
  → 後:Grab + 所有権有り → onGrab()が実行される  → 後:Grab + 所有権有り → onGrab()が実行される
  
vci/script/reference/eventfunction.1624523716.txt.gz · 最終更新: 2021/06/24 17:35 by t-daihisa

ページ用ツール