【unity】Clusterワールドでの扉の開け閉めギミックの作り方 

目次

Clusterのワールド作成、扉の開け閉めの方法

 

Blenderでの事前準備

clusterで扉を開け閉めできるようにしたいので、unityで設定する前に、Blenderで扉の原点を移動しておきます。

3Dカーソルを選択メッシュの中心に移動

原点にしたい扉の軸のメッシュを選択します。
そしてShift + Sでパイメニューを出しCursor to Selectedにします。

原点を3Dカーソルに移動

Object > Set Origin > Origin to 3D Cursor

3Dカーソルに原点が移動しました。

 

ここからUnityでの作業

ドアにしたいオブジェクトをUnityのインポートした状態で始めます。Doorとしました。
DoorをHierarchyにドラッグします。

Clusterのワールド制作では、空のオブジェクトに下記の場合(GameObject)にロジックを指定しないといけません。
そのため、空のGameObjectをHierarchyで右クリックをして作成します。
そのDoorのオブジェクトを入れます。下記画像は入れた状態です。

しかし、この状態だと回転する支点がドアの側面からかなりズレてしまっています。
せっかくBlenderでDoorオブジェクトの支点を指定したのに・・・
UnityでGameObjectの子であるDoorを移動して支点を移動することも、力ずくでできるのですが、かなりめんどくさいので違う方法をします。簡単にできる方法があるなら、誰か教えてください!

そこで、簡単にDoorの支点と空のGameObjectを同じにする方法がありました。
まずDoorのオブジェクトをHierarchyに入れ、Doorを右クリックします。

すると、Doorの子に空のGameObjectが作成されます。
この状態で、GameObjectを選択すると前準備でBlenderで指定したDoorの原点と、GameObjectと同じ場所になっていることがわかります。

Doorの子になっているGameObjectをドラッグで外に出し、親子関係を一度解消します。
次に、GameObjectの中にDoorを入れて、GameObjectの子がDoorになった状態にします。

空のGameObjectの名前を変えておきます。
G_Doorにしました。

ドアの開閉Animetionを作成

あらかじめProject内にAnimetionフォルダを作っておきます。

上のWindowからAnimation > Animationウィンドウを表示させます。

ドアのopenアニメーションを作成

AnimetionウィンドウにCreateボタンがあるのでクリックします。
名前をopenにして保存します。

するとこの画面になります。
AddPropertyを押して、TransformRotationをクリックします。

Rotationのタイムラインが作成されます。
RotationのY軸の最後のキーフレームをクリックし、90にします。

closeアニメーションを作成

次に、openと表示されている部分をクリックし、Create New Clip…をクリックします。

openの時と同じように、今度はcloseにします。

AddPropertyをクリックし、Rotationをクリックします。

今度は、タイムラインの最初のキーフレームをクリックし、90に指定します。

Animatorの設定

今度はWindow > Animation > Animatorで
Animatorウィンドウを表示します。

最初は、このような画面になっています。

BaseLayer内の空白で右クリックし、Create > Emptyで空のものを作ります。

空のものを選択し、inspectorで名前をStandbyに変更します。

Standbyを右クリックSet as layer Default Stateを選択

このような状態になりました。

EntryからStandbyに矢印が伸びている状態です。

次に、Standby右クリックし、Make Transitionを選択します。
するとStandbyから矢印が出てきますのでその矢印をopenに繋げます。

同じように、openを右クリックし、Make Transitionでcloseに繋げ、closeを右クリックし、MakeTransitionでopenに矢印を繋げます。

ParametersからBoolを選択します。

名前をopenAnimにします。

Standbyからopenに伸びている矢印を選択します。
inspectorConditionsをクリックします。

ConditionsopenAnim
trueにします。

Has Exit Timeチェックを外します。

今度は、openからcloseに伸びている矢印を選択します。
inspectorのConditionsをopenAnim
falseにします。
HasExitTimeのチェックも外します。

今度はcloseからopenに伸びている矢印を選択します。
inspectorのConditionsをopenAnim
trueにします。
Has Exit Timeのチェックを外します。

Assetsから、opencloseのアニメーションクリップを選択し、それぞれ、InspectorLoop Timeチェックを外します。

DoorのオブジェクトにBox Colliderを設定します。

HierarchyのG_Door(親のからのオブジェクトだった方)を選択します。
InspectorからAddComponentから下記のものを追加してそれぞれ設定をこの通りにします。
・Item
・Set Animation Value Gimmick(Script)
・Interact Item Trigger(Script)
・Item Logic(Script)

これで、扉をクリックすると、開き、もう一度クリックすると閉じるギミックができます。
Clusterでワールドを作ってみたい方は一度試してみてください!

最後までご覧いただきありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です