ゲームツクール!第6回 unity×unity-chanでアクションゲームを作ろう

62
ゲームツクール!第6回 Unity×Unity-Chanアクションゲームを作ろう! 2014/05/22 FAGStudio 浅野

Post on 31-May-2015

6.433 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ゲームツクール!第6回Unity×Unity-Chanで

アクションゲームを作ろう!

2014/05/22 FAGStudio 浅野

Page 2: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

最初に

このスライドは

Unity情報番組「ゲームツクール!」第6回Unity×Unity-Chanでアクションゲームを作ろう!の資料です。

操作手順などはこちらを参考にしてください。・Youtube(録画分)http://bit.ly/GameTukuru・UStreamhttp://www.ustream.tv/channel/16059441/

Page 3: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

FAGStudio 代表

浅野 祐一

自己紹介

FAG Studiohttp://fagstudio.com/

スマートフォン向けのゲームを作っています!鶏を愛してやまないゲームプログラマ!!

Page 4: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

書籍の紹介

3/26に「Unity4スクリプト入門」を出版しました!!

既刊の「Unity4入門」と合わせて書店やAmazonなどで購入で

きます!!※画像クリックで紹介ページにジャンプします。

Page 5: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

はじめに

本日は、アクションゲームで便利に使えるMecanimを機能を利用してアニメーションのタイミングに合わせたボイス再生や、当たり判定の操作を紹介します。

うまく活用するとスクリプトの量を減らす事ができます!!

Page 6: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

本日の内容

1. Unity-Chanとは?2. Unity-ChanをUnityに取り込もう3. サンプルを確認してみよう4. ステージを作ろう5. アニメーションを追加しよう6. スライディングで壁の下を潜ろう7. ゴールを作ろう8. 動作にボイスを連動させよう

Page 7: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

Unity-Chanとは?

公式:http://unity-chan.com/詳しくは公式をご覧下さい!!

Page 8: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ユニティちゃんをダウンロードしよう!

同意してダウンロード

Page 9: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ユニティちゃんをダウンロードしよう!

ユニティちゃんデータはUnityPackageで配布されています。

Page 10: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ユニティちゃんをインポートしよう

Unityを起動している状態で、PackageファイルをダブルクリックしてUnityに取り込みましょう。

Unityちゃんのサムネイルインパクトありますね!

Page 11: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ユニティちゃんの動きを見てみよう!

ProjectビューのAssets->UnityChan->ScenesにUnityちゃんのサンプルシーンがあるので

どんなものか試してみよう!

Unityちゃんのアニメーションを確認できます。

Page 12: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

セットアップをしよう!

まず最初は、Hierarchyビューに最初から置いてあるMainCameraを削除してください。

Page 13: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

セットアップをしよう!

続いて、ユニティちゃんをHierarchyビューに追加します。 Assets->UnityChan->Prefabs->for Locomotionにある

「UnityChan」と「MainCamera」をHierarchyビューの何も無いところにドラッグしてドロップします!

Page 14: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

セットアップをしよう!

続いて、一つ上の階層(Assets->UnityChan->Prefabs)に含まれているユニティちゃん用のDirectional LightのPrefabをSceneに追加しましょう!

そうすることで見た目がいい感じになります。

Page 15: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを設定

Hierarchyビューに追加されたunitychanをクリックしてInspectorビューにあるAnimatorコンポーネントの

Controller項目の丸いアイコンをまずクリック

UnityChanLocomotionsを選択します。

Page 16: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

床を作成しよう!

UnityChanには最初から重力が適用されているので床を設置しないと落下し続けてしまいます。

HierarchyビューのCreateからCubeを作成しましょう。

Name: FloorPostion: 「X, 0」「Y,-1」「Z,0」Rotation: 「X, 0」「Y,0」「Z,0」Scale: 「X, 100」「Y, 1」「Z, 100」

Page 17: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

Unityちゃんを動かす

Unityちゃんを動かす事ができるようになりました。

矢印キーで動かせます。

Page 18: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ここからが本番!

Page 19: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

今日作るもの

1. ステージ2. 障害物を潜れるスライディング3. 勝利ポーズ4. アニメーションに連動したボイス再生

Page 20: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

まずサンプルスクリプトを見てみよう

・UnityChanControlScriptWithRgidBody.cs

1行1行、日本語のコメントがついている親切っぷりです!!

これだけでもかなり勉強になるかも

Page 21: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ステージを作ろう

HierachyビューのCreateからCubeを2つ作成してそれぞれを次のように設定します。

・BlockPosition 0, 1, 5 Scale: 5, 1, 1

・Goal Position 0, 0, 10 Scale: 3, 3, 3IsTrigger -> true

Page 22: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ステージを作ろう

資料では、見やすいように適当に作ったMaterialを各パーツに割り当てておきます。

この辺は任意で好きな色や絵を設定してください。

Page 23: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

Assets->UnityChan->Animatorsフォルダの中にある

UnityChanLocomotions.controllerをダブルクリックでAnimatorビューを開きます。

Page 24: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

Locomotionステートの上あたりに 「Sliding」「Win」の2つのStateを追加します。

Page 25: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

追加したSlidingとWinそれぞれのInspectorビューのMotionにモーションデータを設定します。

Win -> WIN00 Sliding -> SLIDE00

Page 26: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

続いて、AnimatorビューのParameterを2つ追加します。

一つ目、 Trigger型 “Sliding”二つ目、 Bool型 “Win”

Page 27: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

SlidingとWinはLocomotionから双方向にTransitionを設定します。

Page 28: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

LocomotionステートのInspectorビューのTransitionsのLocomotion -> Sliding のConditionsにSlidingを設定します。

Locomotion -> Win のConditionsには

Win : true を設定します。

Page 29: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

AnimatorControllerを編集

WinステートのInspecotorビューのTransitionsも設定します。

・Win -> Locomotions  Win : false

Page 30: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

キャラクタースクリプトを作成しよう

Hierarchyビューのunitychanに、Inspectorビューの一番下にあるAddComponentから 「PlayerController」という名前のスクリプトを作成します。

LanguageはCSharpで作ります。

Page 31: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

キャラクタースクリプトを作成しようスクリプト完成版はこちらから

Zキーを押したらSliding、OnGoalが呼ばれたらWinのParameterを変更するようにしています。

Page 32: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ゴールスクリプトを作成しよう

HierarchyビューのGoalを選択して

InspectorビューのAddComponentから Name : GoalLanguage : CSharpで新しいスクリプトを追加してください。

Page 33: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ゴールスクリプトを作成しよう

スクリプト完成版はこちらから

中身は、OnTriggerEnter関数を用意して

当たり領域に侵入した相手に対して”OnGoal”をSendMessageするだけです。

SendMessageは、相手に渡した名前の関数があればそれを呼んでくれる機能ですね。

Page 34: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ここまでで確認してみよう!

とりあえず、スライディングと勝利ポーズが確認できるようになりましたが、問題点が2つあります。

一つは、スライディングでBlockの下を潜れないのと、

もう一つは、ゴールについて勝利ポーズをしてもそのままのポーズで動けてしまう点です。

次にそれらを対応していきます。

Page 35: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

Assets->UnityChan->Animationsの中にある

unitychan_SLIDE00.fbxを選択してください!

Page 36: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

unitychan_SLIDE00.fbxのInspectorビューで

まずAnimationsタブを選択して、下の方にある

「Curves」の+ボタンクリックします。

Page 37: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

すると、アニメーションカーブというデータが一つ追加されます。

名前を「slidingHeight」と変えておいてください。

Page 38: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

Preview画面のシークバーをしゃがむタイミングまで再生してから・・・

Page 39: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

AnimationCurverの赤枠で囲った+アイコンをクリックします。するとKeyというパラメータが追加されます。

続けて、-1と数値を入力します。

最後にApplyをクリックしてください。

(忘れると追加が反映されません)

Page 40: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

同じ要領で、スライディングを終えて立つ直前にも-1のKeyを設定します。

追加したらApply ボタンを押してください。

Page 41: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

再びUnityChanLocomotionのAnimatorビューを開いて

Parametersに Float型のslidingHeightを追加してください。

先ほどSLIDE00に追加したAnimationCurveの名と同じ物がParamtersにある場合、アニメーション側でAnimationCurverで設定した通りにパラメータを変えてくれます。

Page 42: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

最後に、自動的に設定されるslidingHeightのパラメータを

スクリプト側で取得して、いい感じにユニティちゃんの

CapsuleColliderを調整してあげればBlockの下を潜れるようになります!!

「UnityChanControlScriptWithRigidbody」のスクリプトで

ジャンプした際にColliderを調整している箇所があるのでそちらを参考にしてみましょう。

Page 43: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

スライディングの高さの調整

スクリプト全体はこちらから

Page 44: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ゴール後は動けないように対応

UnityChanを歩かせているコンポーネントは

unitychanに設定されている

「UnityChanControlScriptWithRigidbody」です。

これを無効にすれば、ユニティちゃんは歩けなくなります。

Page 45: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ゴール後は動けないように対応

スクリプト全体はこちらから

ユニティちゃんコンポーネントをGetして・・・

OnGoal関数内でコンポーネントを無効に設定

Page 46: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

確認してみよう。

Page 47: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスとアニメーションの連動

最後に、アニメーションと連動したボイス再生を実装します。

Assets->UnityChan->Animationsunitychan_SLIDE00.fbxを選択してください。

Page 48: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスとアニメーションの連動

手順はAnimationCurveを追加したときと同じ要領です。

unitychan_SLIDE00.fbxのInspectorビューで

Animationsタグを選択して下の方にあるEventをクリックしてください。

するとイベントのタイムラインが表示されます。

Page 49: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスとアニメーションの連動

ボイスを再生したいタイミングまでPreviewを再生しておいて、赤枠の+アイコンをクリックします。

すると、EventのKeyが追加されます。

Page 50: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスとアニメーションの連動

こんなウインドウが開くので、Objectの赤枠で囲ったアイコンをクリックして・・・

univという名前のものがボイス素材なので好きな物を選んでください。

Page 51: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスとアニメーションの連動

再び先ほどのWindowにもどり、Functionに「OnPlaySound」と設定してください。(Applyは忘れずに)これはSendMessageと同じような働きをしてくれます。

あとは、unitychanにAudioSourceを追加して

PlayerControllerにOnPlaySound関数を追加すればボイスが再生されるようになります。

Page 52: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスを再生しよう

Hierarchyビューのunitychanを選択してから

InspectorビューのAddComponentをクリックして

Audio->AudioSourceを追加します。

これで音がユニティちゃんの位置からなるようになります。

Page 53: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスを再生しよう

スクリプト全体はこちらから

最後に、OnPlaySound関数ををPlayerControllerに追加すれば声が再生されるようになります。

Eventを作成する際にObjectに設定したファイルが引数として入ってきますので、それをそのまま再生するだけでよいです。

Page 54: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

ボイスを再生しよう

Winアニメーションも同じようにサウンドを設定してみましょう。

Page 55: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

おまけ

Page 56: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

やられアクションを入れてみる

AnimatorビューにDamageステートを追加して

MotionにはDAMAGE01を設定します。

Page 57: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

やられアクションを入れてみる

ParametersにInt型の

Lifeを追加します。

すぐやられるようにLifeは1をセット

Locomotionステートと

Deadステートとの

Transitionを繋いで

Locomotion -> DeadのConditionsをLife Equals 0 にします。

Page 58: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

やられアクションを入れてみる

スクリプト全体はこちらから

OnCollisionEnterで、”Enemy”タグを持った何かにぶつかればLifeパラメータを一つ減らすようにします。

Page 59: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

やられアニメーションのトリミング

Assets->UnityChan->Animationsにある

unitychan_DAMAGE01.fbxを選択して

InspectorビューのAnimationsタブの中程にある

右側の画像のものを見つけてください。

Page 60: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

やられアニメーションのトリミング

右側のつまみを操作して、Preview画面のキャラクターが倒れている状態になるようにします。

こうする事で、立ち上がるアニメーションは使わず、倒れたままを維持する事ができるようになります。

Page 61: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

やられアニメーションのトリミング

Enemyタグを持つ何かにぶつかるとその場に倒れるようになりました。

今回はトリミングで立ち上がる部分をカットしていますが、このままだと倒れた状態で動きが停止してしまうので、気になるようでしたら倒れた状態のステートも用意してあげると良いでしょう。

Page 62: ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

終わり!