この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
vci:sample:oncollision:no2 [2019/05/27 20:40] oinari ↷ モデル作成:vci作成:棒で突くと勢いよく飛ぶビリヤードの玉を作る から vci:sample:oncollision:no2 へページの移動と名称変更しました。 |
vci:sample:oncollision:no2 [2022/03/06 23:06] (現在) Ramen [非推奨の関数名修正]GetSubItem→GetTransform |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== 棒で突くと勢いよく飛ぶビリヤードの玉を作る ====== | ====== 棒で突くと勢いよく飛ぶビリヤードの玉を作る ====== | ||
- | \\ | + | |
> ※この記事は「UniVCI-0.15」時点のものです。\\ | > ※この記事は「UniVCI-0.15」時点のものです。\\ | ||
- | サンプルデータ:https://seed.online/items/b972a2468ef6167c8d00915ba2a0bfce216becaccaec51825840bd50af9e2625\\ | + | サンプルデータ:https://seed.online/items/b972a2468ef6167c8d00915ba2a0bfce216becaccaec51825840bd50af9e2625 |
- | \\ | + | |
- | オブジェクトが衝突したときの処理になるので「**onCollisionEnter**」を使用します。\\ | + | オブジェクトが衝突したときの処理になるので「**onCollisionEnter**」を使用します。 |
- | \\ | + | |
各オブジェクトの設定は次のようになります。\\ | 各オブジェクトの設定は次のようになります。\\ | ||
SubItemのGroupIDは0以外で同じ数字にしておきます。\\ | SubItemのGroupIDは0以外で同じ数字にしておきます。\\ | ||
- | (同じ数字のSubItemはオーナー権が一致し、正しく物理演算が行われる)\\ | + | (同じ数字のSubItemはオーナー権が一致し、正しく物理演算が行われる) |
{{:モデル作成:vci作成:tutorial_bili1.png?400|}} | {{:モデル作成:vci作成:tutorial_bili1.png?400|}} | ||
- | \\ | + | |
{{:モデル作成:vci作成:tutorial_bili2.png?400|}} | {{:モデル作成:vci作成:tutorial_bili2.png?400|}} | ||
- | \\ | + | |
{{:モデル作成:vci作成:tutorial_bili3.png?400|}} | {{:モデル作成:vci作成:tutorial_bili3.png?400|}} | ||
- | \\ | ||
- | \\ | ||
GameObjectの「VCI Object」コンポーネントのScriptsのSizeを**1**に指定し、\\ | GameObjectの「VCI Object」コンポーネントのScriptsのSizeを**1**に指定し、\\ | ||
- | Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。\\ | + | Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。 |
- | \\ | + | |
- | AddForce(Vector3)はオブジェクトにVector3の力を加えます。\\ | + | AddForce(Vector3)はオブジェクトにVector3の力を加えます。 |
- | \\ | + | |
GetUp()でオブジェクトの上向き(ローカルY方向)単位ベクトルを得ることができます。\\ | GetUp()でオブジェクトの上向き(ローカルY方向)単位ベクトルを得ることができます。\\ | ||
今回の場合はビリヤードのキューの先端の方向がy方向になっています。 | 今回の場合はビリヤードのキューの先端の方向がy方向になっています。 | ||
- | |||
<file lua main.lua> | <file lua main.lua> | ||
function onCollisionEnter(item, hit) | function onCollisionEnter(item, hit) | ||
if (item=="bili_ball" and hit=="bili_q") or (item=="bili_q" and hit=="bili_ball") then | if (item=="bili_ball" and hit=="bili_q") or (item=="bili_q" and hit=="bili_ball") then | ||
- | local bili_ball = vci.assets.GetSubItem("bili_ball") | + | local bili_ball = vci.assets.GetTransform("bili_ball") |
- | local bili_q = vci.assets.GetSubItem("bili_q") | + | local bili_q = vci.assets.GetTransform("bili_q") |
bili_ball.AddForce(1000 * bili_q.GetUp()) | bili_ball.AddForce(1000 * bili_q.GetUp()) | ||
end | end |