この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
vci:sample:transform:no3 [2022/03/06 23:03] Ramen [非推奨の関数名修正]GetSubItem→GetTransform |
vci:sample:transform:no3 [2023/10/11 16:58] (現在) pastatto サンプルのデータ追加 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== アイテムを消したり出したりする(scaleの変更) ====== | ====== アイテムを消したり出したりする(scaleの変更) ====== | ||
+ | [[https://developer.virtualcast.jp/vci-docs/api/classes/ExportTransform/SetLocalScale.html|SetLocalScale]]を利用した、**SwitchのSubitemをUse**した時に、**Targetが消えたり出たりする**サンプルです。\\ | ||
+ | 実際にオブジェクトが消えてるわけではなく、縮小する事で消えてるように見せています。 | ||
- | このサンプルは、**SwitchのSubitemをUseした時に、Targetが消えたり出たりする**サンプルです。\\ | + | 注意点として、縮小するだけではその場に極小のオブジェクトが残ります。\\ |
- | 実際にオブジェクトが消えてるわけではなく、縮小する事で消えてるように見せるパターンです。 | + | メッシュを完全に見えなくするには、透明のマテリアルに変更したり、縮小と同時に地下や接触不可な場所に位置変更する等といった方法があります。 |
- | ===== 素材データ ===== | + | === サンプルデータ === |
+ | {{ :vci:sample:transform:subitemhyde.zip |}} | ||
- | 事前に用意する素材はありません。\\ | + | ==== コンポーネント設定 ==== |
- | Unityのプリミティブを使用します。 | + | |
- | ===== コンポーネント設定 ===== | + | {{ :vci:sample:transform:no3:subitemhyde.png?direct }} |
- | {{:vci:sample:transform:no3:subitemhyde.png?direct&600|}}\\ | ||
基本的に**GrabできるSubitemを2つ作ればOK**ですが、以下ポイントになります。 | 基本的に**GrabできるSubitemを2つ作ればOK**ですが、以下ポイントになります。 | ||
ライン 27: | ライン 28: | ||
===== VCIスクリプト ===== | ===== VCIスクリプト ===== | ||
+ | |||
+ | ''local _Target = vci.assets.GetTransform("Target")'' \\ | ||
+ | Targetという名前のSubitemを検索し、Subitemの情報を _Target という変数に格納します。\\ | ||
+ | Targetのsubitemの情報は_Targetにアクセスする事で知る事ができます。 | ||
+ | |||
+ | ''_Target.GetLocalScale().x'' \\ | ||
+ | Targetのx方向の大きさにアクセスする事ができます。\\ | ||
+ | 縮小時(非表示)はこの値が0.001になり、拡大時(表示)はこの値が1になります。\\ | ||
+ | なので、この値を比較する事によって、現在拡大されているか、縮小されているかを知る事ができます。 | ||
+ | |||
+ | ''local scale = Vector3.%%__%%new(1, 1, 1)''\\ | ||
+ | ''_Target.SetLocalScale(scale)''\\ | ||
+ | アイテムの大きさはX方向、Y方向、Z方向の3つの値(ベクトル3)を使用します。\\ | ||
+ | '' Vector3._new() '' で変更したい大きさを作成し''_Target.SetLocalScale()''で適用します。 | ||
+ | |||
+ | 実際にアイテムは消滅するわけではないですが、縮小する事によって消えてるように見えます。\\ | ||
+ | 問題点としては、接触の判定自体はなくならないという点と、scaleの値が表示・非表示でしか使えなくなるという点です。\\ | ||
+ | その他に、ポジションを遠くに動かして消してるおうに見せる方法もあります。\\ | ||
+ | 作りたい物によって、scaleを変更するか、positionを変更するか使い分ける事になるでしょう。 | ||
<file lua main.lua> | <file lua main.lua> | ||
ライン 54: | ライン 74: | ||
</file> | </file> | ||
- | ===== VCIスクリプト(解説) ===== | ||
- | ''local _Target = vci.assets.GetTransform("Target")'' \\ | ||
- | Targetという名前のSubitemを検索し、Subitemの情報を _Target という変数に格納します。\\ | ||
- | Targetのsubitemの情報は_Targetにアクセスする事で知る事ができます。 | ||
- | |||
- | ''_Target.GetLocalScale().x'' \\ | ||
- | Targetのx方向の大きさにアクセスする事ができます。\\ | ||
- | 縮小時(非表示)はこの値が0.001になり、拡大時(表示)はこの値が1になります。\\ | ||
- | なので、この値を比較する事によって、現在拡大されているか、縮小されているかを知る事ができます。 | ||
- | |||
- | ''local scale = Vector3._new(1, 1, 1)''\\ | ||
- | ''_Target.SetLocalScale(scale)''\\ | ||
- | アイテムの大きさはX方向、Y方向、Z方向の3つの値(ベクトル3)を使用します。\\ | ||
- | '' Vector3.__new() '' で変更したい大きさを作成し''_Target.SetLocalScale()''で適用します。 | ||
- | |||
- | 実際にアイテムは消滅するわけではないですが、縮小する事によって消えてるように見えます。\\ | ||
- | 問題点としては、接触の判定自体はなくならないという点と、scaleの値が表示・非表示でしか使えなくなるという点です。\\ | ||
- | その他に、ポジションを遠くに動かして消してるおうに見せる方法もあります。\\ | ||
- | 作りたい物によって、scaleを変更するか、positionを変更するか使い分ける事になるでしょう。 |