【Unityアセット】Game Createrの基本的な使い方

Game Creatorサムネ

Unityアセット「 Game Creator」の基本的な使い方をチュートリアルで解説します。

チュートリアルの前にGame Createrの概要を知りたい方は以下のページで紹介をしています。

Action、Trigger、Condition

Game CreatorはTrigger、Action、Conditionからなる3つのコンポーネントで成り立つビジュアルスクリプティングが基盤となっています。Triggerは発火、つまりイベント実行条件、Conditionはイベントが分岐する場合のIF条件、Actionは実際の処理を担当します。

Game Creatorイメージ

つまり、Game Creatorの世界は1シーンの中に様々なTrigger→Actionの組み合わせを用意することでゲームを実現します。

併せてキャラクターコントローラー、カメラコントローラー、変数管理システムを作りビジュアルスクリプティング(特にAction)と一体化することで、初心者にも易しいアセットになりました。

キャラクターとカメラの設定

PakageManagerからGame Creatorをインストールした前提で話を進めます。

Game Creatorは簡単に動くキャラクターと良い挙動を示すカメラを作ることが可能です。まずユーザーの操作できるキャラクターを作ってみましょう。

キャラクターが歩く場所が欲しいので、Hierarchyを右クリックし、3D Object > Qubeを選択、名称をFloorとし、Positionを(0,0,0)、Scaleを(20,1,20)にします。

Hierarchyを右クリックし、Game Creator > Cahracters > Playerを選択することで操作できるキャラクターを作成可能です。デフォルトではGame Creatorオリジナルのキャラクターが設定してあります。

Game Creatorチュートリアル1
Game Creatorチュートリアル2

そのまま、プレイモードで実行してみましょう。Game Creatorオリジナルのキャラクターがwasdキーで四方に動き、スペースでジャンプします。

では、このキャラクターにオリジナルのモデルを利用してみます。Humaroid型の3Dモデルを用意してください。当ページではRinを利用します。PlayerのInspector上のCharacter AnimatorコンポーネントのCharacter Model欄にモデルをドロップする枠がありますので、3DモデルのPrefabをこちらにドロップします。するとGame Creatorキャラの機能を持ったオリジナルの3Dモデルに早変わり。

もちろんGame Creatorキャラと同様に動きます。

Game Creatorチュートリアル3

キャラクターについての詳しい項目は以下のページで解説しています。

では、現在のカメラだと視点固定で少々不便なので、カメラをPlayerの後ろからプレイヤーを追うように設定しましょう。Hierarchyを右クリックしGame Creator > Other > Camera Motorを選択します。

InspectorのCamera MotorコンポーネントでAdventureカメラと記載している箇所の右のChangeボタンを押し、Followカメラを選択します。この箇所でカメラの大枠の振る舞いを決めます。

Main CameraにCamera Controllerコンポーネントを追加し、Current Camera Motorに先ほど設定したCamera Motorをドロップします。何らかの条件で自動的に追加されるので、追加されていたら触る必要はありません。

Game Creatorチュートリアル4
Game Creatorチュートリアル5

プレイモードにすると、Playerの動きに併せてカメラが追うように動いています。

カメラについての詳しい項目は以下のページで解説しています。

宝箱を作る

この機能を使ってPlayerが宝箱に近づいた時に決定ボタンを押すと宝箱を開くアクションを製作してみます。

まず、宝箱を用意します。当ページではこちらの宝箱を利用します。

ProjectでTreasureChest > TreasureCHest_LOD2.prefabをHierarchyにインポートします。BoxCliderコンポーネントを追加してサイズの位置を調整します。

Game Creatorチュートリアル6

この状態で、キャラは宝箱を通り抜けることができなくなります。この宝箱はChest Final_LOD2.FBXの中に宝箱が開くアニメーションがあります。これを利用できるようにAnimatorControllerを作ります。Projectを右クリックしCreate > Animation Controllerを選択します。コントローラーを開きParametersにBool型変数Openを追加、Animatorを右クリックしCreate State > Emptyを2回行い、Stateを2つ追加します。

EntryとくっついたNew StateをCloseとリネーム、もう一つをOpenとリネームしCloseからOpenへMake Transitionで矢印を引きます。矢印のInspectorでConditionsに、Open = trueの時と条件を追加します。併せてOpenのMotionにTreasureChestFinal_LOD2.fbxのアニメーションをセットします。

できたAnimator ControllerはHierarchyのTreasureChest_LOD2のInspectorでAnimatorコンポーネントのControllerにセットします。

Game Creatorチュートリアル7
Game Creatorチュートリアル8

では、このアニメーションを再生する処理をGame Creatorで実装してみましょう。まずHierarchyを右クリックしてGame Creator > Actionsを選択します。

ActionsのInspectorはリスト上になっていて、Add Actionボタンを押すごとに処理を上から下に追加していきます。実際のゲームでも、上から下に順番に処理を実行していきます。

Add Action > Animation > Animateを選択します。これはAnimatorで選択したゲームオブジェクトのParameter Nameで設定した変数(ParameterTypeも指定)に値を入れる命令です。AnimatorをGame ObjectにしてHierarchyのTreasureChestLOD2をセット、ParameterNameをOpen(Animator Controllerのパラメータ名)、ParameterType(Animator Controllerのパラメータの型)をBoolにし、Boolにチェックを入れます。

Game Creatorチュートリアル9

これで宝箱を開く処理ができました。しかし、まだゲームを実行しても宝箱は開きません。Actionコンポーネントは、必ずTriggerコンポーネント、又はActionを実行する命令を受けて初めて実行されます。

Hierarchyで右クリックしGame Creator > Triggerを選択します。Triggerは初期状態だとOn start、つまりシーン起動時に実行されるようになっています。ここで、Triggerのinspectorのプラスボタンを押すとアクション一覧に一列追加されます。これはOn Startの時に実行するActionの一覧です。このようにGame Creatorでは複数のアクションを同時に複数同時に動かすことが可能です。

では+ボタンを押してできた一覧に先ほどのActionをセットしてみましょう。ゲームを実行すると開始時に宝箱が開きます。

Game Creator_宝箱が開いた

プレイヤーが宝箱に近づいた時のみ開くようにする

宝箱は開きました。ですが、開始前に開いてしまいます。プレイヤーが一定距離に近づく、且つ特定のボタンを押した時に開くようにしましょう。

この場合は条件、つまりTriggerを変更してあげればよさそうです。ただし、Triggerはif andみたいなことができません。そのため、Triggerで宝箱からの距離をはかり、Conditionでボタン押下条件を設定します。

先ほどのTriggerは削除し、TreasureChest_LOD2にTriggerコンポーネントとCapsule Colliderコンポーネントを追加します。

Capsule ColliderはIs Trrigerにチェックを入れ、Radiusを2にします。これで宝箱の周囲2の距離にオブジェクトが入った時を検出できます。

Triggerは、Changeボタンを押し、Object > On Trigger Enterを選択します。Other ColliderにPlayerをセットします。Other Colliderは検知したいColliderがあるオブジェクトのため、先ほどのCapsule Colliderの中にPlayerが入った時に反応します。

最後にTriggerのInspectorの+ボタンを押して、Actionsに宝箱を開けるActionsをセットします。

Game Creatorチュートリアル10

実行すると、プレイ開始時は宝箱が閉じたままで、プレイヤーが近づくと宝箱が開くようになります。

ちなみに今回はTreasureChest_LOD2に追加する形で実現しましたが、TriggerオブジェクトそのものをTreasureChest_LOD2に重ね合わせてTriggerのColliderを調整することでも実現可能です。対象となるオブジェクトそのものにColliderを付けたくない場合はこちらの手法を利用してください。

かっこよく演出する

宝箱を開くだけでは単調なため、少しActionsをアレンジしてみましょう。まず、宝箱を開く条件(宝箱から2以内にプレイヤーが近づく)が整った場合、どこにいてもプレイヤーが宝箱の前に来て宝箱を見るようにします。

この場合、処理中にユーザーによってプレイヤーに動かされると困るため、まずプレイヤーの操作を受け付けないようにします。ActionsのAdd Actionボタンを押し、Character > Character Propertyを選択します。TargetをPlayer、Change PropertyをIs Controllable、Value BoolをValueにしてチェックを外します。これでプレイヤーはユーザーの操作を受け付けなくなります。

宝箱を開く処理より前に実行するため、=ボタンを押しながらセットし、Animated Treasure~より上でドロップすると順序が入れ替わります。

その次に、プレイヤーの位置を宝箱の前に歩かせます。Add Actionボタンを押しCharacter > Move Characterを選択、TargetをPlayer、Move ToをPosition、Positionを(-2,0,0)にします。これで、キャラクターは宝箱の前に移動します。

次にAdd Actionボタンを押し、Character > Character Directionを選択、CharacterをPlayer、DirectionをTarget、Direction TargetをTransformにし、HierarchyのTreasureChest_LOD2を選択します。キャラクターが宝箱の方向を向くようになります。

それぞれのアクションをCharacter Property > Move Character > Character Direction > Animateの順に並び替え、以下の画像のようにします。

Game Creatorチュートリアル11

次にジェスチャーを喜びのポーズに変更します。Add ActionからCharacter Jestureを選択。CharacterをPlayer、ClipをCharacter@victory、Wait Till Completewにチェックを入れます。

試しに実行してみると宝箱が開くと同時に喜ぶので違和感があります。Animateの下Character Jestureの上にGeneral > Waitを入れTime of Waitを3秒にします。

さらにゲーム視点だと違和感があるので、カメラを変えてしまいます。Game Creatorは複数のカメラを作り、基本は1つを常に表示しながら、任意の時に別のカメラの視点に変えることが可能です。

HierarchyでGame Creator > Other > Camera Motorを選択、名前をChestOpenCameraとします。Positionを(-2,2,3)、Rotationを(0,180,0)にします。これは宝箱の後ろから見下ろすような視点です。Changeボタンを押し、FixedCameraに変更、Look AtをPlayerにします。これは完全に視点固定のカメラです。

Actionに戻り、Animateの下、Waitの上でCamera >Change Cameraを選択。Camera Motorに先ほど作成したChestOpenCameraを選択、Transition Timeに3.3秒を指定します。これで3.3秒かけてカメラを切り替えます。

Game Creatorチュートリアル12
Game Creatorチュートリアル13

微調整をしていないので多少不自然ですが、イベントが発生すると、カメラが宝箱の後ろに移動し、プレイヤーの勝利ポーズを映すようになります。

Game Creator勝利

最後に通常の処理に戻してあげる必要があります。

Camera > Change CameraでCamera MotorでHierarchyのCamera Motorをセット、Character > Character ProtpertyでTargetをPlayer、Change PropertyをIs Controllable、Value BoolをValueでチェックを入れます。

変数を使用して一度開いた宝箱からは同じ処理をしないようにする。

実は現在の状態だと宝箱の周囲2の位置にプレイヤーが入った時に毎回同じ処理をします。そこで変数を使用して2回目以降はイベントを実行しないようにしましょう。

Unity上のタブメニューからGame Creator > Preferencesを選択し、Variablesタブを開きます。+ボタンを押すと変数が1つ追加されるので、NameをisChestOpenCheck、TypeをBool、Nameの右端にある四角にチェックを入れます。初期値falseのbool型の変数ができます。右端の四角はセーブ可否のチェックで、これで一度開けた宝箱はセーブ後にロードしても開けたと扱われます。

Game Creatorチュートリアル14

先ほどのActionsの一番最後にVariables > Variable Boolを選択。VariableをGlobal Variables、isChestOpenCheck、Valueにチェックを入れます。これで初期値falseの変数が処理終了後にtrueになります。

次にHierarchyを右クリックし、Game Creator > Conditionsを選択。Clauseボタンを押して、次にAdd Conditionボタンを押します。Variables > Variable Boolを選択。VariableをGlobal Variables、isChestOpenCheck、Compare ToにValueを、そしてチェックを外します。ifの下のActionsに先ほどまで利用していたActionsをセットします。

最後にTreasureChest_LOD2のTriggerコンポーネントのActionを削除し、+ボタンの左側のボタンを押します。こちらはConditionをセットできる一覧で先ほどのConditionをセットします。

これで同じ処理は発生しないようになります。

HierarchyのActions、Conditions、ChestOpenCameraをTreasureChest_LOD2の下に移動しPotisionを修正、TreasureChest_LOD2をPrefabs化することで、凡庸的に宝箱を扱うことも可能です。

まとめ

以上、簡単にですが、Game Creatorの基本的な使い方を解説しました。文章で書くと長くなりますが、実際に操作すると短時間に簡単に処理を組めることを実感できると思います。

関連リンク

参考 【Unityアセット】Game Creatorの紹介と解説 トップページゲーム開発65535 Ver2

コメントを残す

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

CAPTCHA