この記事ではUnityのPlayMakerを使ってSTYLY上で無双的なゲームを作る方法を紹介します。
敵キャラクターをランダムに配置してプレイヤーに向かってくるようにします。 武器に触れたら消えるようにして、たくさん出てくる敵キャラクターをどんどん倒せる爽快ゲーム を作ってみましょう。
サンプル
STYLY GALLERYからサンプル空間を体験できます。
記事で紹介しているUnityプロジェクトのダウンロードはこちらからできます。
使用するアセット
この記事ではPlayMakerを使用します。
キャラクターのモーションはMove Motion Free Packのモーションを使用します。
キャラクターの設定
リグの設定
ボーンとウェイト調整された人型キャラクターをUnityでインポートします。
インスペクタのRigのAnimation TypeをHumanoidにします。 Avatar DifinitionはCreate From This Modelにしておくと自動的にAnimatorコンポーネントが 追加されます。
キャラクターの名前は”Nakagawa”としました。
Animator Controllerを追加する
アニメーションを制御するためにAnimator Controllerを追加します。
CreateからAnimator Controllerを選択し、名前はここでは”Nakagawa”としました。
先程作ったAnimatior Controller(Nakagawa.control) をAnimatorコンポーネントのControllerに指定します。
Apply Root Motionにはチェックを入れておきます。
Animatorの設定
Window → AnimatorからAnimatorウィンドゥを開きます。
右クリックからCreate State → Emptyで空のステートを作成します。
作成したNew Stateを選択します。
Motionのところに使用したいモーションを指定します。
ここではMove Motion Free Packに入っている”Basic_Walk_01″にします。
再生させてうまくモーションが渡せているか確認します。
ちゃんと歩くモーションをしてくれました。
PlayMakerの設定
Stateを追加する
モーションが設定されたキャラクターをプレハブ化します。
“Prefabs”というフォルダを作ってそこにドラッグします。
新たに空のオブジェクトを作りそこにPlayMakerのステートを追加していきます。
GameObjectからCreate Emptyで空のオブジェクトを作り名前を”STYLYmusou”とします。
それもPrefabsフォルダに入れてプレハブ化します。
PrefabsフォルダのSTYLYmusouを選択してからPlayMaker ウィンドウ上で右クリックからAdd FSMを選択します。
これでステートが作成されました。 FMSが追加されたプレハブをヒエラルキー上で選択してPlayMakerで編集しようとすると”Editing of Prefab Instance is disabled. See preferences”と出てきます。
その場合は”Edit Prefab”を選択してください。 ここではすべてプレハブを編集していくことになります。
剣を作る
敵を倒すための剣をUnityで作っておきます。
ここではシンプルにCubeを縦長にしただけのものを用意しました。
剣のような武器はAsset Storeにたくさんあるのでそれらを使うのも良いですね。
当たり判定を取得するためにRigidbodyを追加してIs Kinematicにチェックを入れます。
Use Gravityのチェックは外します。
作った剣を”Sword”という名前にしてプレハブ化します。
Actionを追加する
PlayMakerでアクションを追加していきます。
先ほど作った剣をコントローラーに取り付けます。
コントローラーにオブジェクトを取り付ける方法に関しては、以下の記事を参照します。
最初にFind Game Objectを使ってVRコントローラを取得します。 剣をここで取得したコントローラの子要素にして使用するためです。
Object Nameには”Controller (right)”と入力します。
Controllerと(right)の間に半角スペースがあるので 気を付けてください。
StoreにはNew Variableから”Controller”という新しい変数を作成しここに格納します。
Create Objectを追加してオブジェクトを生成します。
Game Objectにはプレハブの”Sword”を指定します。
Store ObjectにはNew Variableから”Sword”という変数を作りここに格納します。
Set Parentを追加してコントローラと剣を親子関係にします。
Game ObjectにはSword、ParentにはControllerをそれぞれ指定します。
Reset Local PositionとReset Local Rotationにはチェックを入れておきます。
これでコントローラと剣の設定ができました。
Transitionを追加してステートが遷移するようにします。
State1を右クリックしてAdd transitionからFINISHEDを選択します。
右クリックからAdd Stateで新規にState2を作ります。
State1のFINISHEDからStae2をドラッグしてつなぎます。
これでState2に遷移できるようになりました。
キャラクター生成
State2の名前を”Character Generation”にしてこのステートでキャラクターの生成を行います。
Create Objectを追加します。 Game ObjectにはプレハブのNakagawaを指定します。
キャラクターを生成する位置を決めるためにX,Zの値を作ります。
毎回違う場所に生成させたいのでRandom Floatを使います。
MinとMaxをそれぞれ-10,10として-10から10の間の値を取得します。
Store ResultにはNew VariableからXとZを作りそこに格納します。
これで毎回ランダムなXの値とZの値を取得できるようになりました。
XとYの値を一緒に格納するためにSet Vector3 XYZを使用します。
Vector3 VariableにはNew Variableから新規で”NakagawaPos”を作成しここに格納します。
XにはRandom FloatからのXをZにはRandom FloatからのZをそれぞれ指定します。
変数NakgawaPosをCreate ObjectのPositionに指定します。
これでランダムな位置に生成する準備が出来ました。
Character GenerationのTrtansitionをFINISHEDを追加します 新規にステートを作成し、名前を”Random Wait”とします。
Character GenerationからRandom Waitをつなぎます。
Random WaitはMinに1、Max3として1秒から3秒までのランダム値を取得してその間キャラクターが生成するタイミング を変化させます。
Real Timeにはチェックを入れておきます。
ランダムな待機所間が終わったらまたCharacter Generationに戻ってキャラクターを生成させます。
Random WaitにFINISHEDのTransitionを追加してCharacter Generationにつなぎます。
Unity上で再生してみるとランダムな位置にキャラクターが生成されていることが確認できます。
UnityからSTYLYにアセットをアップロードする方法 記事を読む
この記事ではUnityで別アセットのアニメーションの受け渡し方とPlayMakerでランダムな位置に キャラクターを生成させる方法を紹介しました。
ゲーム性があるのものはランダムな要素が必要な場面が多く出てきますよね。
またキャラクターにはモーションが必須ですが、自分でいくつものモーションを作成するのは大変です。
そんな時にもUnityのAssetStoreにあるモーションを自作のキャラに適用できるので非常に便利です。
次の記事では迫ってくる敵キャラクターを剣で倒す方法を紹介していきます。
記事で使用した3Dモデルは、サンプルプロジェクト内にあります。
3Dモデルの使用は、STYLY内で限りご使用いただけます。
STYLY内で使用していただけるのであれば、改造や改変に制限はありません。