🛠️

スクリプト付きクラフトアイテムのサンプルプロジェクト

2023/03/17に公開

ワールドクラフトでスクリプトを使いたい(スクリプトもワールドクラフト内で編集)場合。
それでも、Unityからまずカラッポのクラフトアイテムをアップロードする必要があります。

また、クラフトアイテムは「Itemの『サイズ』の設定」など、最初のうちはちょっとわかりにくい要素もあります。
なので、最低限 「(ほぼ)カラッポのクラフトアイテム」をアップロードしやすい、シンプルなサンプルプロジェクトをつくりました。

ちなみに前回の「アクセサリ」のサンプルプロジェクトと共有です。
なので、Unityのシーンを開くところまでは全く同じ説明になります。
(今回もWindowsベースの説明です)

そもそものUnityのインストールなど


https://creator.cluster.mu/cck-worldcreatetutroial-home/
こちらの「第1.5回 Unityを導入する」をクリックして広げ、説明を見るのがわかりやすいと思います。

サンプルのダウンロード・導入方法

テンプレートワールドなどをすでに使ったことがある人ならここはムズかしくないと思います!
基本的に同じことです。
中身のモデルやテクスチャなどなどは好きに使っちゃってください。


https://vins-jp.sakura.ne.jp/pack/craft_accessory_prj.zip
↑こちらからダウンロードして解凍してください。


中に「CraftAccessoryProject」というフォルダができます。


Unity Hubから「開く」でさっきの「CraftAccessoryProject」フォルダを指定すると、このように登録されます。

では「CraftAccessoryProject」と書いてあるところをクリックし、開いてください。
最初はCluster Creator Kitのダウンロード・インストールなどが自動で行われるので、すこし時間がかかります。

シーンを開く


最初は何も表示されていませんが、「プロジェクト」の中にある「アセット/シーン」フォルダを開き、「アップロード…」とあるアイコンをダブルクリックすると……


こんな画面になります。

シーンに置いてあるモノの説明

まず「X方向に行き来する(左右に行ったり来たりする)」ハコです。

赤いボールは、「持つと音がする」スクリプトがついています。

茶色いのは、すわると音楽(ただし5秒間)がループするイスです。

これらのスクリプトは、もちろん使わなくてもかまいません。
Scriptable Itemのスクリプトをぜんぶ消してしまえば、特になにもしないアイテムになります。

単純にアップロードする

サンプルプロジェクトのクラフトアイテムを単純にアップロードする方法です。
メニューの 「Cluster」から「クラフトアイテムアップロード」 を選び……

「プロジェクト」の「アセット/クラフトアイテム」フォルダから、ドラッグ&ドロップしましょう。

複数のアイテムを一度にアップロードすることもできます。
あとは「アップロード」ボタンを押すだけです。

アップロードできたら、clusterに入って「ワールドクラフト」を立ち上げてみましょう。
「バッグ」の「つくったもの」 というところに、あなたのアップロードしたアイテムが入っていますから配置してみてください。

ハコは左右に動きますし、ボールやイスは持ったり座ったりすると音が出るのが確認できたと思います。

スクリプトをコピペで変える

それでは、左右に動くハコのスクリプトを別のものに変えてみましょう。
一番カンタンなのは、ネットで見つけたスクリプトを、Unity上でScriptable Itemの「Source Code」に貼り付けてしまうことですね。
とりあえず今回は以下のコードをコピーしましょう。

マウスで上から下までしっかり選んで、「Ctrl」+「C」でコピーしてくださいね。
(最初の「const~」から最後の行の「});」まで!)

const hayasa = 1.0;
const nagasa = 2.0;
const muki = new Vector3(0,1,0);

$.onUpdate(deltaTime => {
  if (!$.state.shokika) {
    $.state.shokika = true;
    $.state.ichi = $.getPosition();
    $.state.time = 0.0;
  }

  $.state.time += deltaTime;

  let _ichi = $.state.ichi.clone();
  let _muki = muki.clone();
  
  const nagasa_now = Math.sin($.state.time * hayasa) * nagasa;
  _ichi.add(_muki.multiplyScalar(nagasa_now));
  $.setPosition(_ichi);
});

まず「クラフトアイテム」の子にある「動くキューブ」をクリックし、インスペクターの「Scriptable Item」の「Source Code」に貼り付けてください。


そして、インスペクターから「オーバーライド」を押し、さらに「すべてを適用する」 を押します。
(この作業を忘れやすいので注意!)

あとはさっきと同じように「クラフトアイテム」フォルダから「クラフトアイテムアップロード」のウィンドウにドラッグアンドドロップし、「アップロード」ボタンを押せば、別の機能を持ったアイテムをワールドクラフトで使えるようになります。

もう1つのやり方として、ワールドクラフト上でスクリプトを書き換える方法があります。
こちらは微妙な動きの変化をチェックしやすいのがポイントです。

まずはcluster上で、≡ボタン→「設定」→「その他」 を開きます。
スクリプトエディタ」をONにしましょう。「コンソール」もONにしておいたほうがいいと思います。

配置した ハコに白い点をあわせて「F12」キー を押すと……

スクリプト編集ウィンドウが出ます。

スクリプトの書いてあるところをクリックすると自動で全選択されるので、さっきコピーしたスクリプトを貼り付けてしまいましょう。


すると、この段階でもうアイテムの動きが変わります。
このように、動きをすぐ確認できるのがワールドクラフト上でスクリプト作業をやることのメリットですね。

あとは「アップロード」ボタンを押してしばらくすると、このように新しいアイテムとして加わります。

スクリプト改変

ワールドクラフトでの動き即変更は、スクリプト改変に手を出したとき特に有効です。

例えば、スクリプトの最初のほうにある

const hayasa = 1.0;

というのを

const hayasa = 3.0;

に変えてみましょう。

ハコの動きが速くなったはずです。「アップロード」すれば、その動きが速いハコを設置できるようになります。

モデルを変える

つづけて、Unity上でモデル差し替えに挑戦してみます。
ハコが動いていてもあまり面白くないですからね。

色々方法がありますが、まずは「動くキューブ」を右クリックし、「プレハブ」-「展開」を押します。

これでアイテムの親子関係を変更することができるようになります。

「動くキューブ」の左にある三角形ボタンを押して、子を表示させましょう。

つづけて「ハコ」をクリックし、「Delete」キーを押して消してしまいます。

ハコが消えた状態


そして「アセット/モデル」フォルダに入っている「バッジ」を、「動くキューブ」のところにドラッグ&ドロップします。これで「バッジ」が「動くキューブ」の子になります。


少し見た目も変えます。「アセット/マテリアル」フォルダにある「イスマテリアル」を、「バッジ」のところにドラッグ&ドロップ。

そして、「動くキューブ」を「灰バッジ」と名前変更してみましょう。
(「バッジ」のほうじゃありませんよ)。

これを「アセット/プレハブ」の空いているところにドラッグ&ドロップ。すると新しく「灰バッジ」というアイテムが登録されましたね。

あとはこれまでと同じように、「クラフトアイテムアップロード」をしてみようとすると、こんな警告っぽい表示が出ます。あと、名前が「動くキューブ」のままですね。

これでも問題ないこともあるのですが、いちおうインスペクターの「Item」のところから「動くキューブ」を「灰バッジ」と変更。そして「Set Default Size」ボタンを押してみましょう。

このように、サイズが自動設定されました。あとはまた 「オーバーライド」「すべてを適用する」 をして、普通にアップロードするだけです。

ワールドクラフトで見てみると、バッジのようなものが左右(スクリプトを新しいものにした人なら上下)に動くようになっています。

独自のモデルを使うには

Unityアセットストアでダウンロードしてきたアセットなども同じようにして使えます(ただしワールドクラフト特有のサイズ制限などには注意。また、自分のワールドで使うのはいいですが、それをアイテムストアで販売申請などしないように注意)。

またBlenderなどでつくったモデルは、「fbx」という形式で書き出せばUnityに読み込むことができます。Blenderの経験がある人はぜひ独自のクラフトアイテムづくりに挑戦してみましょう。

もしおかしくなったら?

今回のサンプルを動かしていておかしくなったら、またサンプルプロジェクトを解凍するところから始めればいつでもやり直せます。気軽にやっていきましょう。

Discussion